What is a CSR?
A Certificate Signing Request is a PEM-encoded ASN.1 structure containing a public key, a Distinguished Name (Common Name, organisation, country) and an optional set of attributes — most commonly an extensionRequest holding the desired Subject Alternative Names. You generate the CSR alongside a private key and send the CSR to a Certificate Authority for signing.
Is it safe to paste a CSR online?
Yes. A CSR contains only public material — your public key plus the names you wish to certify. The private key never leaves the host where it was generated. Even so, this decoder runs entirely in your browser, so the CSR text never leaves the tab — verify in DevTools Network.
What fields are required?
Common Name (CN) is the only field every CA insists on, and even that is being deprecated in favour of SAN-only certificates. Organisation (O) and Country (C) are required for OV/EV certs. For DV (Domain Validation) certs like Let’s Encrypt, only the SAN list is validated — the rest of the Subject DN is ignored.
How can I verify the SAN list?
Click Decode and look at the Subject Alternative Names section. Every name (DNS, IP, email, URI) the CA will validate appears here. If a name is missing, the CSR was generated without -addext or without a [req_ext] section in the openssl config — regenerate before submitting.
Can I extract the public key?
The decoder reports the algorithm (RSA, ECDSA, Ed25519) and bit size, which is what you usually need to confirm. To extract the actual public-key bytes, run openssl req -in csr.pem -noout -pubkey on a host with openssl installed — exporting the bytes here would clutter the UI without adding value.
What is the challenge password?
A legacy SCEP attribute originally used to authorise enrolment. Modern public CAs ignore it. If openssl prompted you for "A challenge password" during csr generation and you typed something, that string ends up in this field — empty is the safe default.
Can I decode encrypted CSRs?
CSRs themselves are never encrypted — only the corresponding private key may be. If your file starts with -----BEGIN ENCRYPTED PRIVATE KEY----- you have pasted the wrong artefact. Look for -----BEGIN CERTIFICATE REQUEST----- specifically.
Why does my CSR show different fields than I entered?
OpenSSL silently truncates Subject fields longer than 64 characters and rejects characters outside the chosen string type (PrintableString does not allow @, *, _). It also normalises Country codes to uppercase 2-letter ISO. If a field looks wrong here, regenerate with -utf8 and double-check the -subj string.