Certificate Parser

X.509 certificates are the standard format for public key certificates used in TLS/SSL. This tool parses PEM-encoded certificates to display the subject, issuer, validity period, public key details, and extensions. Essential for debugging HTTPS connection issues.

Specifications

Common Use Cases

  • Debug SSL/TLS connection errors ("certificate has expired")
  • Verify certificate covers the correct domain names
  • Check certificate expiration dates for renewal planning
  • Inspect intermediate and root certificates in a chain
  • Verify certificate attributes meet compliance requirements

Features

  • Parse PEM-encoded certificates (-----BEGIN CERTIFICATE-----)
  • Display subject and issuer distinguished names
  • Show validity period (Not Before / Not After)
  • Extract public key algorithm and size
  • Display Subject Alternative Names (SANs)
  • Show certificate extensions (Key Usage, Extended Key Usage, Basic Constraints)
  • Authority/Subject Key Identifier display
  • CRL Distribution Points and Authority Information Access URLs

Examples

Self-Signed Certificate

Try it →

An X.509 certificate for example.com with Subject Alternative Names.

-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIUb7VAvx3CADEDexgoNd41E9Y5tZowDQYJKoZIhvcNAQEL
BQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
DVNhbiBGcmFuY2lzY28xFDASBgNVBAoMC0V4YW1wbGUgSW5jMRQwEgYDVQQLDAtF
bmdpbmVlcmluZzEUMBIGA1UEAwwLZXhhbXBsZS5jb20wHhcNMjYwMTI1MDQ0ODMw
WhcNMjcwMTI1MDQ0ODMwWjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZv
cm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEUMBIGA1UECgwLRXhhbXBsZSBJ
bmMxFDASBgNVBAsMC0VuZ2luZWVyaW5nMRQwEgYDVQQDDAtleGFtcGxlLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALKN/rhprC1rfrwKpj9ZqwRR
4c51daZRMlij1NbmUJn7KiZTghxu1OtOEodGmpcF3xuWxiBYTOKvQZ+qPpED6IAG
IYtANPetAkRbsf/xdZZZ/BRR3jQQ2AVDfyuBSYjYEV4JMVG47JCj7oewgNb0dejv
HI18aBWzIGE6v9Zv5FDt+d3GjJignI8elrGzrnJg85qsd743xSEPALqf1NsyhjtY
Th91DazAOoPzA/DMXzoXUhAf9C5uWQlSdn6JDzs8/ld0c+LZH9ohvC/IN/PfdkYg
NYR2AJutUdxbOPPmcFm46o/WpquV2H0mIMuvdzI+k/tk6wVV2jwu2ysQLwweqecC
AwEAAaOBjjCBizAdBgNVHQ4EFgQU9Th/a8eJZ9DHh5uUGyf+iTSNF14wHwYDVR0j
BBgwFoAU9Th/a8eJZ9DHh5uUGyf+iTSNF14wDwYDVR0TAQH/BAUwAwEB/zA4BgNV
HREEMTAvggtleGFtcGxlLmNvbYIPd3d3LmV4YW1wbGUuY29tgg9hcGkuZXhhbXBs
ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAE1rGDKmhMBkcdwZva/9CouLeLOIHBiI
uPH1LV6Pbl2KJ11w1L36SstF17+M3Sn0SJxstCePJWlfLlx6r5JZSyNAQghmgep1
/YWrsDtC3bjs4stOz1FWUgUDs+b7pf+h93lLTShX8mue2rjIXbYJPJx9XsCmyx1R
zLuYSoOSQ/0aR7NSzjqgoHEUNI/2mGTRJ6ngC0vx88ppn+tuk8PyAXt8kp8hPx3I
6lmmyzfuwt0JZIawW2p1nkMlGt2IBIxBBY7vjAHCTDRa69YP08QeImDM13FelUVh
tXPOCJaWXZQmppgKNtmpedswRRtOyl83cqzkz4rZRpjnpPqIEWNQ9bs=
-----END CERTIFICATE-----

Private Key

Try it →

A corresponding RSA private key in PKCS#8 format.

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyjf64aawta368
CqY/WasEUeHOdXWmUTJYo9TW5lCZ+yomU4IcbtTrThKHRpqXBd8blsYgWEzir0Gf
qj6RA+iABiGLQDT3rQJEW7H/8XWWWfwUUd40ENgFQ38rgUmI2BFeCTFRuOyQo+6H
sIDW9HXo7xyNfGgVsyBhOr/Wb+RQ7fndxoyYoJyPHpaxs65yYPOarHe+N8UhDwC6
n9TbMoY7WE4fdQ2swDqD8wPwzF86F1IQH/QublkJUnZ+iQ87PP5XdHPi2R/aIbwv
yDfz33ZGIDWEdgCbrVHcWzjz5nBZuOqP1qarldh9JiDLr3cyPpP7ZOsFVdo8Ltsr
EC8MHqnnAgMBAAECggEAANyt1b1JqlASJPcQMmiABBDsVcJvacW+lOFfNHv/XtIk
AMD3QdfiVnh8BZ2SC+Sbw4nvNVZeMkH4v4j84FcnSjO9YB5Ub+9GSyCXzWdT0zQA
AyeAbe2FSkRqWsI3CETl+iqlMekCPpIfPRYQqSw1w+tTm5APZWHSzpiQA7ydwSsP
sJ1QBq64eXSXFhpyLG0LE4ATeyH9dxj9n9NocL0QOqT+Tl5Dcjlxc7fYmoHStC0q
9Xb5h1Po3kmESAELdUobBbJvJFVK98PMB6osUR4VM4snQJOJZ+4Df7bxU311OgLB
Am/mQjsnyZqBWjDQaUj/BGnapJxqB+a102Ki3XMX4QKBgQDcmUc0c+zfRfnic22Q
ytJ3Y29N1C52GESFulL+cYfwwfVK/VXWT1b/eECABVWZvzP22wyEnkodkYWSoN86
GK2PvH8ii9EpkkCtRabFqmbfqPysTKawu9/BgrVAvEvRQjHHAUZnytwtw+IcL6Nz
EjQ4UrFK+3/rycT05I/ToHRgGQKBgQDPNXI0OSJ1nl7YQOry4C4ekT/uCJAbV7bN
MU49iSMqldlXy+VvSKAwErzvaAtQUolvu3DPw2hcpMxuH+hoHweTA0lu0VbZRKvS
1EhMWQGN2qrSQYcnhvKY/BUbd7KjZ858PeOBcTgyCfBkfdBNgughjsCv2BxKGxQI
Li2gSWSZ/wKBgF0M2pgpffUAE1ON1N2KcBSkAMMXiTGPMvgli/R/9xN6/PjQu3BW
rx+7nZlipqTfng+2fiVCj4jBZVJgQUjEOBG1NPthdqzOYDG2e45NPm+BXHNhMb7C
wLNjawkPY/u0rEKBKy2EyDMVuT6iaZOUTiqj1t0GEQNobIfQEUr3F5+hAoGAZuD3
afxwIovWNXLN9HbgDyc44Zt4yUqcpXZ0jVL4ld0+wzumF8GsXxH+orM64s+IE2Sy
V0WDHHRqV8cZ4hB99z0riY0AnPFeilgB6X5Lqj3GkIweab6z1sdaR3//vuf8em1T
9uHa7+VFaO+aq9FyJa819ljLevPE12buGmY2P8sCgYEAoSk3KwiEO9zvxuuwqdBh
Qv/dvWPgh/KttWcoL6Axt1z4gG+vdidn8xIdVGy6xnQOYpm+ANqRpWO82Hws5ITy
8uDn/S2kjQnyh8Cz7jJLBiJUxz/ZWfUz56cQq3Bej46oJN6UKkhJ9ogAjUJAYjV1
7JIWxv6OC7Cg6xfHCGRa7F0=
-----END PRIVATE KEY-----

Tips

  • Export a certificate from browser: click the padlock > Certificate > Details > Export.
  • Get a site's certificate with: openssl s_client -connect example.com:443
  • SANs (Subject Alternative Names) list all valid domain names.
  • Root certificates are self-signed (issuer = subject).
  • Check certificate chain with: openssl verify -CAfile ca.pem cert.pem

Understanding Certificate

X.509 certificates are the foundation of trust on the internet, enabling TLS/SSL encryption for HTTPS connections, code signing, email security (S/MIME), and VPN authentication. A certificate binds a public key to an identity (domain name, organization, or individual), and a Certificate Authority (CA) vouches for this binding by digitally signing the certificate.

Certificates are typically stored in PEM format — Base64-encoded DER data enclosed between -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- markers. A certificate contains the subject (who the certificate identifies), the issuer (who signed it), a validity period (Not Before and Not After dates), the subject's public key, and extensions that control usage. The Subject Alternative Name (SAN) extension lists all domain names the certificate covers.

Certificate chains establish trust by linking an end-entity certificate to a trusted root CA through one or more intermediate CAs. When a browser connects to a website, it verifies the chain: the server's certificate was signed by an intermediate CA, which was signed by a root CA that the browser trusts. A broken chain — missing intermediates or an unknown root — causes the familiar "Your connection is not private" error.

Certificate management is a common source of outages. Expired certificates cause immediate service disruption. Mismatched domain names trigger browser warnings. Missing intermediate certificates work in some browsers (which may cache or fetch them) but fail in others and in API clients. Monitoring certificate expiration and automating renewal with tools like Let's Encrypt and certbot is essential for reliable operations.

To check when a certificate expires, paste the PEM content into this tool and look at the Not After date. From the command line, run openssl x509 -enddate -noout -in cert.pem for a local file, or openssl s_client -connect example.com:443 piped to openssl x509 -noout -enddate for a remote server. Automated monitoring through certbot, cert-manager, or dedicated monitoring services can alert well before expiration to prevent outages.

Root certificates are self-signed (the issuer equals the subject) and come pre-installed in browsers and operating systems as trust anchors. Intermediate certificates are signed by a root CA and are used to sign end-entity certificates. This chain of trust protects the root key — if an intermediate is compromised, only that intermediate is revoked rather than the root. Servers must send the full chain (end-entity plus all intermediates) but should not include the root certificate itself.

Subject Alternative Names (SANs) list all the domain names and IP addresses a certificate is valid for. A single certificate can protect multiple domains like example.com, www.example.com, and api.example.com using SANs. Modern browsers use SANs instead of the Common Name (CN) field for domain validation. Wildcard certificates (*.example.com) cover one level of subdomains but not the apex domain itself.

A certificate that works in browsers but fails in API clients is a common issue caused by incomplete certificate chains. Browsers are more forgiving — some fetch missing intermediates automatically through AIA (Authority Information Access) fetching or use previously cached intermediates. API clients like curl, Node.js, and Python's requests library typically require the complete chain to be sent by the server. Ensure your server is configured to send the end-entity certificate plus all intermediate certificates, and test with curl -v or openssl s_client to verify the chain is complete.

← Back to all tools