| 1. General Results, most used to calculate the result |
A | name "app.addy.io" is subdomain, public suffix is ".io", top-level-domain is ".io", top-level-domain-type is "country-code", Country is British Indian Ocean Territory (the), tld-manager is "IO Top Level Domain Registry", num .io-domains preloaded: 2306 (complete: 231048)
|
A | Good: All ip addresses are public addresses
|
A | Good: Minimal 2 ip addresses per domain name found: app.addy.io has 2 different ip addresses (authoritative).
|
A | Good: Ipv4 and Ipv6 addresses per domain name found: app.addy.io has 1 ipv4, 1 ipv6 addresses
|
A | DNS: "Name Error" means: No www-dns-entry defined. This isn't a problem
|
A | https://app.addy.io/ 94.237.47.233
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://app.addy.io/ 94.237.47.233
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://app.addy.io/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://app.addy.io/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://app.addy.io/login
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://app.addy.io/login
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://app.addy.io/.well-known/acme-challenge/check-your-website-dot-server-daten-dot-de
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://app.addy.io/.well-known/acme-challenge/check-your-website-dot-server-daten-dot-de
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://94.237.47.233/ 94.237.47.233
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://94.237.47.233/ 94.237.47.233
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://[2a04:3544:1000:1510:e8b5:06ff:fe29:1d32]/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: fb851a82532372eaef69689a17bbc4677d6e3a41f4b83458bac6fd8d34262880 confirms the Certificate with the same value
|
A | https://[2a04:3544:1000:1510:e8b5:06ff:fe29:1d32]/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Good: Valid DANE - entry found: signed Data _443._tcp.app.addy.io: CertUsage 3 (DANE-EE, Domain-issued certificate), Selector 1 (SPKI, SubjectPublicKeyInfo), Matching 1 (SHA2-256, 256 bit hash by SHA2), CertificateAssociationData: ea5084550183245140e3f0e44093fe237f2fec9754882a5f8813b46d501a61cd confirms the Certificate with the same value
|
A | https://app.addy.io/ 94.237.47.233
| https://app.addy.io/login
| Correct redirect https to https
|
A | https://app.addy.io/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
| https://app.addy.io/login
| Correct redirect https to https
|
A | Good: destination is https
|
A | Good - only one version with Http-Status 200
|
A | Good: one preferred version: non-www is preferred
|
A | Good: No cookie sent via http.
|
A | Good: every cookie sent via https is marked as secure
|
A | Good: Every cookie has a SameSite Attribute with a correct value Strict/Lax/None
|
A | Excellent: Main Domain is in the Google-Preload-List
|
A | HSTS-Preload-Status: Preloaded. Check https://hstspreload.org/ to learn some basics about the Google-Preload-List.
|
A | Good: All urls with http status 200/404 have a complete Content-Type header (MediaType / MediaSubType + correct charset)
|
A | http://app.addy.io/ 94.237.47.233
| https://app.addy.io/
| Correct redirect http - https with the same domain name
|
A | http://app.addy.io/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
| https://app.addy.io/
| Correct redirect http - https with the same domain name
|
B | https://app.addy.io/.well-known/acme-challenge/check-your-website-dot-server-daten-dot-de
|
| Missing HSTS-Header
|
N | https://94.237.47.233/ 94.237.47.233
|
| Error - Certificate isn't trusted, RemoteCertificateNameMismatch
|
N | https://[2a04:3544:1000:1510:e8b5:06ff:fe29:1d32]/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Error - Certificate isn't trusted, RemoteCertificateNameMismatch
|
X | Fatal error: Nameserver doesn't support TCP connection: get.desec.io / 2a01:4f8:10a:1044:deec:642:ac10:80: Timeout
|
X | Fatal error: Nameserver isn't defined or has timeout
|
A | Good: More then one ip address per domain name found, checking all ip addresses the same http status and the same certificate found: Domain app.addy.io, 2 ip addresses.
|
| Info: Checking all ip addresses of that domain without sending the hostname only one certificate found. Checking all ip addresses and sending the hostname only one certificate found. Both certificates are different. So that domain requires Server Name Indication (SNI), so the server is able to select the correct certificate.: Domain app.addy.io, 2 ip addresses.
|
B | No _mta-sts TXT record found (mta-sts: Mail Transfer Agent Strict Transport Security - see RFC 8461). Read the result of server-daten.de (Url-Checks, Comments, Connections and DomainServiceRecords) to see a complete definition. Domainname: _mta-sts.app.addy.io
|
| 2. Header-Checks |
A | app.addy.io
| Content-Security-Policy
| Ok: Header without syntax errors found: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://js.stripe.com/; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-src https://js.stripe.com/; object-src 'none'
|
A |
|
| Good: default-src directive only with 'none' or 'self', additional sources are blocked. font-src
|
A |
|
| Good: default-src without 'unsafe-inline' or 'unsave-eval'. font-src
|
E |
|
| Bad: No form-action directive found. Use one to limit the form - action - destinations. form-action is a navigation-directive, so default-src isn't used.
|
E |
|
| Bad: No frame-ancestors directive found. Use one to limit the pages allowed to use this page in frame / iframe / object / embed / applet. frame-ancestors is a navigation-directive, so default-src isn't used.
|
E |
|
| Bad: No base-uri directive found. Use one to limit the URLs which can be used in a document's <base> element. Because it's a document directive, default-src isn't used, so an own directive is required.
|
A |
|
| Good: object-src only with 'none' or 'self' found, no scheme, no other urls. That blocks object / embed / applet - elements.
|
F |
|
| Critical: script-src with 'unsafe-inline' or 'unsafe-eval' and without a nonce found. That's dangerous, don't use it. If you really need one of these unsafe directives, add a nonce.
|
A |
|
| Good: script-src without * and a scheme found.
|
A |
|
| Good: script-src without data: schema found. Why is this important? The data: schema allows hidden code injection. Insert <script src='data:application/javascript;base64,YWxlcnQoJ1hTUycpOw=='></script> in your page and see what happens.
|
A |
|
| Good: frame-src without data: defined or frame-src missing and the default-src used as fallback not allows the data: schema. That blocks hidden code injection. Insert <iframe src="data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PHA+YmVmb3JlPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmFsZXJ0KCdYU1MnKTwvc2NyaXB0PjxwPmFmdGVyPC9ib2R5PjwvaHRtbD4="></iframe> in your page and see what happens.
|
C |
|
| Info: default-src and some other fetch directives have the same list of values. Remove the other fetch directive, default-src is used as fallback. Directives to remove: font-src
|
A |
| X-Content-Type-Options
| Ok: Header without syntax errors found: nosniff
|
A |
| Referrer-Policy
| Ok: Header without syntax errors found: origin-when-cross-origin
|
A |
| X-Frame-Options
| Ok: Header without syntax errors found: SAMEORIGIN
|
B |
|
| Info: Header is deprecated. May not longer work in modern browsers. SAMEORIGIN. Better solution: Use a Content-Security-Policy Header with a frame-ancestors directive. DENY - use 'none', SAMEORIGIN - use 'self'. If you want to allow some domains to frame your page, add these urls.
|
A |
| X-Xss-Protection
| Ok: Header without syntax errors found: 0
|
B |
|
| Info: Header is deprecated. May not longer work in modern browsers. 0
|
F | app.addy.io
| Permissions-Policy
| Critical: Missing Header:
|
| 3. DNS- and NameServer - Checks |
A | Info:: 4 Root-climbing DNS Queries required to find all IPv4- and IPv6-Addresses of 2 Name Servers.
|
A | Info:: 4 Queries complete, 4 with IPv6, 0 with IPv4.
|
A | Good: All DNS Queries done via IPv6.
|
A | Good: Some ip addresses of name servers found with the minimum of two DNS Queries. One to find the TLD-Zone, one to ask the TLD-Zone.ns1.desec.io (2607:f740:e633:deec::2, 45.54.76.1), ns2.desec.org (157.53.224.1, 2607:f740:e00a:deec::2)
|
A | Good (1 - 3.0):: An average of 2.0 queries per domain name server required to find all ip addresses of all name servers.
|
A | Info:: 3 different Name Servers found: get.desec.io, ns1.desec.io, ns2.desec.org, 2 Name Servers included in Delegation: ns1.desec.io, ns2.desec.org, 2 Name Servers included in 2 Zone definitions: ns1.desec.io, ns2.desec.org, 1 Name Servers listed in SOA.Primary: get.desec.io.
|
A | Good: Only one SOA.Primary Name Server found.: get.desec.io.
|
| Error: SOA.Primary Name Server not included in the delegation set.: get.desec.io.
|
A | Good: All Name Server Domain Names have a Public Suffix.
|
| Error: Name Server Domain Names with Public Suffix and without ip address found.: 1 Name Servers without ipv4 and ipv6: 1
|
|
|
A | Info: Ipv4-Subnet-list: 2 Name Servers, 2 different subnets (first Byte): 157., 45., 2 different subnets (first two Bytes): 157.53., 45.54., 2 different subnets (first three Bytes): 157.53.224., 45.54.76.
|
A | Excellent: Every Name Server IPv4-address starts with an unique Byte.
|
A | Info: IPv6-Subnet-list: 2 Name Servers with IPv6, 1 different subnets (first block): 2607:, 1 different subnets (first two blocks): 2607:f740:, 2 different subnets (first three blocks): 2607:f740:e00a:, 2607:f740:e633:, 2 different subnets (first four blocks): 2607:f740:e00a:deec:, 2607:f740:e633:deec:
|
A | Good: Name Server IPv6 addresses from different subnets found.
|
| Nameserver doesn't pass all EDNS-Checks: get.desec.io: OP100: no result. FLAGS: no result. V1: no result. V1OP100: no result. V1FLAGS: no result. DNSSEC: no result. V1DNSSEC: no result. NSID: no result. COOKIE: no result. CLIENTSUBNET: no result.
|
| Nameserver doesn't pass all EDNS-Checks: get.desec.io: OP100: no result. FLAGS: no result. V1: no result. V1OP100: no result. V1FLAGS: no result. DNSSEC: no result. V1DNSSEC: no result. NSID: no result. COOKIE: no result. CLIENTSUBNET: no result.
|
| Nameserver doesn't pass all EDNS-Checks: get.desec.io / 88.99.64.5: OP100: fatal timeout. FLAGS: fatal timeout. V1: fatal timeout. V1OP100: fatal timeout. V1FLAGS: fatal timeout. DNSSEC: fatal timeout. V1DNSSEC: fatal timeout. NSID: fatal timeout. COOKIE: fatal timeout. CLIENTSUBNET: fatal timeout.
|
| Nameserver doesn't pass all EDNS-Checks: get.desec.io / 2a01:4f8:10a:1044:deec:642:ac10:80: OP100: fatal timeout. FLAGS: fatal timeout. V1: fatal timeout. V1OP100: fatal timeout. V1FLAGS: fatal timeout. DNSSEC: fatal timeout. V1DNSSEC: fatal timeout. NSID: fatal timeout. COOKIE: fatal timeout. CLIENTSUBNET: fatal timeout.
|
| Nameserver doesn't pass all EDNS-Checks: ns1.desec.io / 45.54.76.1: OP100: ok. FLAGS: ok. V1: ok. V1OP100: ok. V1FLAGS: ok. DNSSEC: ok. V1DNSSEC: ok. NSID: ok (3803d7ce6f1f). COOKIE: SOA expected, but NOT found, NOERR expected, BADVER found, Version 0 expectend and found. CLIENTSUBNET: ok.
|
| Nameserver doesn't pass all EDNS-Checks: ns1.desec.io / 2607:f740:e633:deec::2: OP100: ok. FLAGS: ok. V1: ok. V1OP100: ok. V1FLAGS: ok. DNSSEC: ok. V1DNSSEC: ok. NSID: ok (3803d7ce6f1f). COOKIE: SOA expected, but NOT found, NOERR expected, BADVER found, Version 0 expectend and found. CLIENTSUBNET: ok.
|
| Nameserver doesn't pass all EDNS-Checks: ns2.desec.org / 157.53.224.1: OP100: ok. FLAGS: ok. V1: ok. V1OP100: ok. V1FLAGS: ok. DNSSEC: ok. V1DNSSEC: ok. NSID: ok (0eee616d37e9). COOKIE: SOA expected, but NOT found, NOERR expected, BADVER found, Version 0 expectend and found. CLIENTSUBNET: ok.
|
| Nameserver doesn't pass all EDNS-Checks: ns2.desec.org / 2607:f740:e00a:deec::2: OP100: ok. FLAGS: ok. V1: ok. V1OP100: ok. V1FLAGS: ok. DNSSEC: ok. V1DNSSEC: ok. NSID: ok (0eee616d37e9). COOKIE: SOA expected, but NOT found, NOERR expected, BADVER found, Version 0 expectend and found. CLIENTSUBNET: ok.
|
A | Good: All SOA have the same Serial Number
|
A | Good: CAA entries found, creating certificate is limited: letsencrypt.org is allowed to create certificates
|
A | Good: CAA entries found, creating certificate is limited: letsencrypt.org is allowed to create wildcard-certificates
|
| 4. Content- and Performance-critical Checks |
A | Good: All checks /.well-known/acme-challenge/random-filename without redirects answer with the expected http status 404 - Not Found. Creating a Letsencrypt certificate via http-01 challenge should work. If it doesn't work: Check your vHost configuration (apachectl -S, httpd -S, nginx -T). Every combination of port and ServerName / ServerAlias (Apache) or Server (Nginx) must be unique. Merge duplicated entries in one vHost. If you use an IIS, extensionless files must be allowed in the /.well-known/acme-challenge subdirectory. Create a web.config in that directory. Content: <configuration><system.webServer><staticContent><mimeMap fileExtension="." mimeType="text/plain" /></staticContent></system.webServer></configuration>. If you have a redirect http ⇒ https, that's ok, Letsencrypt follows such redirects to port 80 / 443 (same or other server). There must be a certificate. But the certificate may be expired, self signed or with a not matching domain name. Checking the validation file Letsencrypt ignores such certificate errors. Trouble creating a certificate? Use https://community.letsencrypt.org/ to ask.
|
| https://app.addy.io/login
|
| Warning: https result with status 200 and size greater then 1024 Bytes without Compression found. Add Compression support (gzip, deflate, br - these are checked) so the html content is compressed.
|
| https://app.addy.io/login
|
| Warning: Https + http status 200 + Inline CSS / JavaScript found. Don't use inline CSS / JavaScript. These are compiled and re-used ressources, save these with a long Cache-Control max-age - header.
|
| https://app.addy.io/login
|
| Warning: Https result with status 200 found, Html-Content is too big. Should be max. 110 %. May contain inline CSS / JavaScript, too much comments or white space. Re-used ressources - create files with a long Cache-Control max-age header. Remove comments and white space.
|
| https://94.237.47.233/ 94.237.47.233
|
| Warning: Https result with status 200 found, Html-Content is too big. Should be max. 110 %. May contain inline CSS / JavaScript, too much comments or white space. Re-used ressources - create files with a long Cache-Control max-age header. Remove comments and white space.
|
| https://[2a04:3544:1000:1510:e8b5:06ff:fe29:1d32]/ 2a04:3544:1000:1510:e8b5:6ff:fe29:1d32
|
| Warning: Https result with status 200 found, Html-Content is too big. Should be max. 110 %. May contain inline CSS / JavaScript, too much comments or white space. Re-used ressources - create files with a long Cache-Control max-age header. Remove comments and white space.
|
A | Good: Every https connection via port 443 supports the http/2 protocol via ALPN.
|
| https://app.addy.io/login
|
| Critical: Some script Elements (type text/javascript) with a src-Attribute don't have a defer / async - Attribute. Loading and executing these JavaScripts blocks parsing and rendering the Html-Output. That's bad if your site is large or the connection is slow / mobile usage. Use "async" if the js file has only functions (so nothing is executed after parsing the file) or is independend. Use "defer" if the order of the scripts is important. All "defer" scripts are executed before the DOMContentLoaded event is fired. Check https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script to see some details.: 1 script elements without defer/async.
|
| https://app.addy.io/.well-known/acme-challenge/check-your-website-dot-server-daten-dot-de
|
| Critical: Some script Elements (type text/javascript) with a src-Attribute don't have a defer / async - Attribute. Loading and executing these JavaScripts blocks parsing and rendering the Html-Output. That's bad if your site is large or the connection is slow / mobile usage. Use "async" if the js file has only functions (so nothing is executed after parsing the file) or is independend. Use "defer" if the order of the scripts is important. All "defer" scripts are executed before the DOMContentLoaded event is fired. Check https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script to see some details.: 1 script elements without defer/async.
|
| Warning: CSS / JavaScript found without Compression. Compress these ressources, gzip, deflate, br are checked. 3 external CSS / JavaScript files without GZip found - 0 with GZip, 3 complete
|
A | Good: All CSS / JavaScript files are sent with a long Cache-Control header (minimum 7 days). So the browser can re-use these files, no download is required. 3 external CSS / JavaScript files with long Cache-Control max-age found
|
A | Good: All images are sent with a long Cache-Control header (minimum 7 days). So the browser can reuse these files, no download is required. 1 image files with long Cache-Control max-age found
|
A | Good: All checked attribute values are enclosed in quotation marks (" or ').
|
A | Good: All img-elements have a valid alt-attribute.: 1 img-elements found.
|
A | Good: Domainname is not on the "Specially Designated Nationals And Blocked Persons List" (SDN). That's an US-list of individuals and companies owned or controlled by, or acting for or on behalf of, targeted countries. It also lists individuals, groups, and entities, such as terrorists and narcotics traffickers designated under programs that are not country-specific. Collectively, such individuals and companies are called "Specially Designated Nationals" or "SDNs." Their assets are blocked and U.S. persons are generally prohibited from dealing with them. So if a domain name is on that list, it's impossible to create a Letsencrypt certificate with that domain name. Check the list manual - https://www.treasury.gov/resource-center/sanctions/sdn-list/pages/default.aspx
|
| https://app.addy.io/.well-known/acme-challenge/check-your-website-dot-server-daten-dot-de
| 2.677 seconds
| Warning: 404 needs more then one second
|
A | Info: Different Server-Headers found
|
A | Duration: 211384 milliseconds, 211.384 seconds
|