Certificate / CSR decoder
Drop a .pem / .crt / .cer / .csr / .der file, or click to choose
{{ error }}
{{ result.kind === 'certificate' ? 'Certificate' : 'Certificate Signing Request' }}
{{ result.subjectStr }}
| Serial | {{ result.serial }} |
|---|---|
| Not before | {{ result.notBefore }} |
| Not after | {{ result.notAfter }} ({{ result.validityStatus }}) |
| Version | {{ result.version }} |
| Signature algorithm | {{ result.sigAlg }} |
| Field | Subject | Issuer |
|---|---|---|
| {{ row.key }} | {{ row.subject }} | {{ row.issuer }} |
| {{ f.key }} | {{ f.value }} |
|---|
Public key
{{ result.publicKey.algorithm }} · {{ result.publicKey.keySize }} bits
| Algorithm | {{ result.publicKey.algorithm }} |
|---|---|
| Size | {{ result.publicKey.keySize }} bits |
| Exponent | {{ result.publicKey.exponent }} |
| Curve | {{ result.publicKey.curve }} |
| Public key | {{ result.publicKey.hex }} |
| SHA-256 fingerprint | {{ result.fingerprints.sha256 }} |
| SHA-1 fingerprint | {{ result.fingerprints.sha1 }} |
Extensions
{{ result.kind === 'certificate' ? 'From the certificate' : "From the CSR's extensionRequest attribute" }}
{{ ext.name }}
critical
{{ ext.text }}
Raw ASN.1 structure
The exact decoded tag / length / value tree, for verification
Show
{{ asn1Dump }}
Everything happens in your browser — files and keys are never uploaded. Decoding a CSR/certificate needs no secrets (it's all public structure); generating one uses the browser's Web Crypto API to create the key pair and sign the request locally.