CSR Generator Online — Create & Verify Certificate Signing Requests (PKCS#10)

Certificates
100% client-side. Processed locally in your browser using the Web Crypto API. Nothing is sent to any server.

How It Works

This tool builds a PKCS#10 (RFC 2986) Certificate Signing Request from scratch in your browser: it hand-encodes the DER structure — subject Name, SubjectPublicKeyInfo, and the extensionRequest attribute carrying your SANs — and signs the CertificationRequestInfo with the Web Crypto API. Choose between RSA 2048–4096 or ECDSA P-256/P-384 key generation, or paste an existing PKCS#8 private key to reuse it without creating a new pair. The Inspect mode reverses the process: it re-parses the DER structure, re-imports the embedded SubjectPublicKeyInfo, and cryptographically verifies the signature over the CertificationRequestInfo bytes — the same check a CA performs before issuing — while also decoding the subject, requested SANs, algorithms, and the CSR's SHA-256 fingerprint.

Key Algorithm Comparison

AlgorithmKey SizeSignature HashBest for
RSA2048 bitsSHA-256Legacy compatibility, older servers
RSA3072 bitsSHA-256Standard security margin (CA/B Forum minimum)
RSA4096 bitsSHA-256Maximum RSA security, larger TLS handshake
ECDSAP-256 (256 bits)SHA-256Modern default — small keys, fast signing
ECDSAP-384 (384 bits)SHA-384Higher security margin, government/compliance

Code Examples

# Generate CSR with OpenSSL (RSA 2048 + SAN)
openssl req -new -newkey rsa:2048 -nodes \
  -keyout server.key -out server.csr \
  -subj "/CN=example.com/O=MyOrg/C=US" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.com"

# Verify the CSR signature
openssl req -in server.csr -noout -verify
# Generate CSR with OpenSSL (ECDSA P-256)
openssl ecparam -genkey -name prime256v1 -out ec.key
openssl req -new -key ec.key -out server.csr \
  -subj "/CN=example.com/O=MyOrg/C=US" \
  -addext "subjectAltName=DNS:example.com,IP:192.168.1.1"

# Decode and inspect CSR fields
openssl req -in server.csr -noout -text

Security Notes

  • Private key never leaves your browser — The key pair is generated with the Web Crypto API and displayed once. Copy and save it immediately; if lost, the CSR is useless and you must generate a new pair.
  • SANs are mandatory — Modern TLS clients (browsers, curl 7.x+) ignore the Common Name and read hostnames exclusively from the Subject Alternative Name extension. Always list every hostname the certificate must cover.
  • Inspect before submitting — Use the Inspect tab to cryptographically verify any CSR's signature and decoded fields before sending it to a CA. This catches encoding errors and subject mismatches early.
  • ECDSA is the modern default — P-256 offers equivalent security to RSA-3072 with much smaller keys and faster handshakes. All major CAs (Let's Encrypt, DigiCert, Cloudflare) support ECDSA CSRs.

Related Tools

Need to convert the generated key between PKCS#1 and PKCS#8 formats? Use the PEM Format Converter. To decode and inspect an issued certificate, try the PEM Certificate Parser. For generating standalone RSA key pairs before creating a CSR, see the RSA Key Generator.

Frequently Asked Questions

What is a CSR and when do I need one?

A Certificate Signing Request (PKCS#10, RFC 2986) is the standard way to ask a Certificate Authority (like Let's Encrypt or DigiCert) to issue a TLS certificate. You generate a key pair, put the public key plus your identity (Common Name, organization, SANs) into the CSR, sign it with the private key, and send the CSR to the CA. The CA never sees your private key.

Which key algorithm should I choose?

ECDSA P-256 is the modern default: small keys, fast signing, and supported by every major CA and browser. RSA 2048 remains the safest compatibility choice for legacy systems; RSA 3072/4096 offer more security margin at the cost of larger handshakes. All presets map to a SHA-256 (or SHA-384 for P-384) signature algorithm.

Why do I need Subject Alternative Names (SAN)?

Modern TLS clients ignore the Common Name and read hostnames exclusively from the SAN extension — a certificate with names only in the CN is rejected by browsers. List every hostname the certificate must cover (including the apex domain, www, and wildcards like *.example.com); IPv4 addresses are encoded as iPAddress entries.

What happens to the private key this tool generates?

It is created with the Web Crypto API inside your browser, displayed once, and never stored, logged, or transmitted. Copy and save it immediately — if you lose it, the CSR is useless and you must generate a new pair. You can also skip generation entirely and paste an existing PKCS#8 key to reuse it.

How does the signature verification in the Inspect mode work?

The inspector re-parses the DER structure, re-imports the embedded SubjectPublicKeyInfo, and verifies the PKCS#10 signature over the CertificationRequestInfo bytes using Web Crypto — the same check a CA performs before issuing. It also decodes the subject, requested SANs, algorithms, and the CSR's SHA-256 fingerprint.

Privacy: This tool runs entirely in your browser — nothing is uploaded or stored. · Disclaimer: For educational purposes only. Not professional security advice.

More in Certificates