Certificate Signing Request (CSR) Generator
Generate a PKCS#10 RSA CSR and matching private key in your browser, with SAN review and optional encrypted PKCS#8 key export.{{ summaryTitle }}
{{ summaryLine }}
{{ csr_pem }}
{{ private_key_pem }}
{{ chart_state === 'unavailable' ? 'The chart could not load or draw. Check your connection, then retry. The counts remain available as CSV.' : 'Loading chart…' }}
| Field | Value | Meaning | Copy |
|---|---|---|---|
| {{ row.label }} | {{ row.value }} | {{ row.detail }} |
{{ opensslConfig }}
A certificate signing request (CSR) is the handoff between a key owner and a certificate authority (CA). It contains a public key, a subject name, optional requested attributes and extensions, and a signature made with the matching private key. The request can be shared with an issuer; the private key must remain with the key owner.
That signature proves that the request was created by someone holding the corresponding private key. It does not prove control of a domain, permission to request a certificate, or acceptance by the CA. The issuer performs its own validation and decides which subject fields, extensions, validity dates, and policies appear in the final certificate.
| Term | Meaning | Decision to make before issuance |
|---|---|---|
| Common name | The primary subject identity in the request | Do not rely on it alone for normal TLS service identity. |
| Subject Alternative Name (SAN) | A requested DNS name or IP address identity | List every name or literal address clients will use. |
| Key usage | Requested cryptographic operations for the key | Choose only the operations the certificate is intended to support. |
| Extended key usage | Requested application purpose such as TLS server or client authentication | Match the issuer’s profile and deployment role. |
Service identity mistakes are expensive because a perfectly valid key pair can still name the wrong endpoint. Include the exact hostnames and IP addresses used by clients, check wildcard scope carefully, and inspect the finished CSR before submission. A wildcard such as *.example.com is not a substitute for every deeper name under that domain.
Key custody is the harder boundary. Losing the private key makes the request unusable for deployment; exposing it allows another party to impersonate the certificate holder after issuance. Generate and store the key in a trusted browser and move it promptly into the intended server or secret-management workflow.
How to Use This Tool:
Start with the identities the certificate must cover, then choose cryptographic and extension settings that match the issuer’s policy.
- Enter the primary DNS name, wildcard name, IPv4 address, or IPv6 address in Common name. Add every client-facing DNS name and IP address to Subject alternative names.
- Keep Include the common name as a SAN on unless the issuing workflow deliberately manages SANs another way. Duplicate names are removed.
- Choose an RSA size and signature digest. The 2048-bit, SHA-256 defaults provide the broad compatibility baseline; use larger keys or digests only when policy requires them.
- Open Advanced to request a TLS server, TLS client, dual-use, or custom key-usage profile. Add optional subject fields only when the CA or internal policy expects them.
- Choose whether to encrypt the exported PKCS#8 private key. An encrypted export requires matching passphrases of at least eight characters.
- Generate the CSR, inspect the SANs, public-key fingerprint, requested usages, and PEM boundaries, then submit only the CSR to the issuer.
Interpreting Results:
The CSR PEM is the shareable request. The private-key PEM is the secret that must stay with the deployment owner. A matching SubjectPublicKeyInfo (SPKI) SHA-256 fingerprint helps identify the generated public key, but it does not validate the requested names or predict what the issuer will approve.
- Confirm that every required identity appears as a DNS or IP SAN.
- Check the RSA size, signature digest, key usage, and extended key usage against the CA profile.
- Use the request ledger or OpenSSL inspection to catch accidental subject fields before submission.
- After issuance, inspect the certificate again. A CA may ignore, replace, or narrow requested extensions.
Technical Details:
PKCS #10 wraps a versioned request-information structure, a signature algorithm identifier, and a signature. The request-information structure contains the subject distinguished name, SubjectPublicKeyInfo, and an attribute set. Requested X.509 extensions are carried inside an extension-request attribute rather than becoming certificate extensions automatically.
Request Construction Core
| Stage | Exact artifact | Purpose |
|---|---|---|
| 1 | RSA key pair | Produces a public key for the request and a private key for signing. |
| 2 | CertificationRequestInfo | Combines version 0, subject, public key, and optional attributes. |
| 3 | DER-encoded request information | Creates the exact byte sequence covered by the signature. |
| 4 | RSASSA-PKCS1-v1_5 signature | Signs the request information with SHA-256, SHA-384, or SHA-512. |
| 5 | PKCS #10 request in PEM | Packages the request information, algorithm identifier, and signature for handoff. |
RSA keys use public exponent 65537 and one of three modulus sizes: 2048, 3072, or 4096 bits. The signature is PKCS #1 v1.5 with the selected SHA-2 digest. The generated request is DER encoded, then written between BEGIN CERTIFICATE REQUEST and END CERTIFICATE REQUEST PEM boundaries.
Identity and Extension Rules
DNS names are lowercased and must contain at least one dot. A wildcard is accepted only as the leading *. label. IPv4 octets must each be 0 to 255, and IPv6 input is expanded to eight hexadecimal groups for encoding. SAN entries are split on commas or new lines and deduplicated by identity type and value.
| Profile | Key usage request | Extended key usage request |
|---|---|---|
| None | None | None |
| TLS server | Digital signature, key encipherment | Server authentication |
| TLS client | Digital signature | Client authentication |
| TLS server and client | Digital signature, key encipherment | Server and client authentication |
| Custom | Selected digital signature, key encipherment, data encipherment, and key agreement flags | Selected server and client authentication flags |
Requested key usage is encoded as a critical extension. Requested SAN and extended key usage are not marked critical. The neutral profile requests no usage extensions. A CA can enforce a different profile regardless of the request.
Private-Key Export
An unencrypted key is exported as PKCS#8 PRIVATE KEY PEM. Passphrase protection uses PBES2 with PBKDF2-HMAC-SHA256, a 16-byte random salt, 100,000 iterations, AES-256-CBC, and a 16-byte random initialization vector; the result is an ENCRYPTED PRIVATE KEY PEM. Encryption protects the saved file, but the passphrase must be stored separately and cannot be recovered here.
Privacy and Key Safety:
Key generation, CSR assembly, signing, and private-key encryption happen in the current browser; the request fields and key material are not sent to a server for generation. A secure browser context with Web Crypto support is required.
- Never upload or paste the private key into a CA portal, ticket, chat, or email.
- Download the key once, move it to its protected destination, and remove stray copies.
- Do not use the non-operational example preview as real request material.
- Changing request or passphrase inputs invalidates the previously generated package; generate a new matched pair.
Worked Examples:
One service with DNS and IP identities
For api.example.net reached by both name and 203.0.113.10, enter the DNS name as the common name and list both values as SANs. The normalized request contains one DNS SAN and one IP SAN; the common-name option does not create a duplicate.
TLS server request with protected key export
Selecting the TLS server profile requests digital signature, key encipherment, and server authentication. Enabling encrypted export with matching passphrases produces an encrypted PKCS#8 key, but the CA still decides whether those requested usages appear in the certificate.
References:
- RFC 2986: PKCS #10 Certification Request Syntax Specification Version 1.7, RFC Editor, November 2000.
- RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile, RFC Editor, May 2008.
- RFC 9525: Service Identity in TLS, RFC Editor, November 2023.
- NIST SP 800-131A Rev. 2: Transitioning the Use of Cryptographic Algorithms and Key Lengths, National Institute of Standards and Technology, March 2019.
- How to inspect a CSR using OpenSSL, Simplified Guide.