Inputs

Defaults to port 443 if omitted.

What a TLS certificate proves

When you connect to an HTTPS site, the server presents a certificate signed by a trusted Certificate Authority (CA). The certificate binds a public key to a hostname, and the signature proves the CA verified that binding. Your browser checks the signature chain back to a root CA it trusts, and only then does it complete the TLS handshake.

Things to check on any certificate

  • Expiration date โ€” modern certs are 90 days (Let's Encrypt) or 1 year (commercial). If a cert is close to expiry on a production site, that's a renewal issue brewing.
  • Subject (CN) and SANs โ€” what hostnames this cert is valid for. The browser will warn if the hostname you're visiting isn't on the list.
  • Issuer โ€” which CA signed it. Let's Encrypt, DigiCert, Cloudflare, Sectigo, Google Trust Services are all common.
  • Key algorithm and size โ€” RSA-2048 is the floor; ECDSA P-256 is preferred (smaller, faster). RSA-4096 is fine but overkill for most uses.
  • Signature algorithm โ€” must be SHA-256 or better. SHA-1 was deprecated in 2017.
  • Full chain โ€” does the server send the intermediate certs? Missing chain breaks some clients (Java, older Android).

How TLS errors usually look

  • NET::ERR_CERT_DATE_INVALID โ€” the cert is expired (or system clock is wrong).
  • NET::ERR_CERT_AUTHORITY_INVALID โ€” self-signed cert, or chain doesn't lead to a trusted root.
  • NET::ERR_CERT_COMMON_NAME_INVALID โ€” the cert is for a different hostname.
  • SSL_ERROR_BAD_CERT_DOMAIN โ€” same as above (Firefox).
Why HSTS matters

If a site has a long HSTS policy (and you've visited it before), browsers refuse to load it without a valid cert โ€” no "ignore warning and proceed" button. This protects against attacks that try to downgrade you from HTTPS to HTTP.