CSR Generator
Enter your domain names, choose a key type and a passphrase, and get a certificate signing request to paste into your certificate authority, plus the matching private key as a passphrase-protected file. The key is created by your browser and never leaves this device.
CSR Generator
- Runs on your deviceNo upload. Nothing you enter leaves your browser.
- Free, no accountNo sign-up, nothing stored on our servers. Limits: up to 100 names per request; passphrases of at least 12 characters.
- FormatsDomain names in; a CSR (PEM) and an encrypted private key (PKCS #8 PEM) out
- Works onCurrent Chrome, Edge, Firefox and Safari, desktop and mobile.
How it works
- Type the domain names and IP addresses the certificate should cover, one per line, and pick the key type (ECDSA P-256 unless your server needs RSA). Add organisation details only if your certificate authority asks for them.
- Choose a passphrase of at least 12 characters and type it twice. It protects the private key file and cannot be recovered, so keep it in a password manager.
- Press Create key and CSR. Download the key file straight away, then copy or download the CSR and give it to your certificate authority.
Questions
Is the private key really never sent anywhere?
Yes. The key pair is created by your browser's own Web Crypto, the request is signed on this device, and the only copy of the private key you get is the encrypted file you download. The page sets no cookies and makes no network request while you use it; you can check this in the browser's network panel. Of your work here it keeps only this tab's short list of anonymous tool steps (such as "succeeded"; at most the latest 200), in session storage that is cleared when the tab closes; it never contains your names, the key or the passphrase. Reloading or closing the tab discards the key, so download it before you leave.
How is the key file protected, and how do I use it on a server?
It is a standard encrypted PKCS #8 file (-----BEGIN ENCRYPTED PRIVATE KEY-----): the key is encrypted with AES-256-CBC under a key derived from your passphrase with PBKDF2-HMAC-SHA256 and 600,000 iterations and a random salt. OpenSSL, nginx, Apache, Node.js and Python read it with the passphrase. If your server cannot ask for a passphrase at start-up, make a plain copy on the server itself with: openssl pkey -in example.key -out example-plain.key (it asks for the passphrase), and protect that file's permissions. This tool never offers an unencrypted key.
Which key type should I choose?
ECDSA P-256 for almost everything: every public certificate authority accepts it, and it is small and fast. Choose P-384 if a policy requires it, and RSA 2048 or 3072 only for old clients or systems that cannot use ECDSA; RSA 4096 is slower to create and to use and seldom needed.
What goes into the request?
The subject (the Common Name, which defaults to the first domain name, and any organisation details you enter), the public key, and all names as a Subject Alternative Name extension, which is what browsers check. Names are validated first: letters, digits and hyphens in labels of up to 63 characters, a wildcard only as the whole first label (*.example.com), international names converted to their xn-- form, and IPv4 or IPv6 addresses. Duplicates are dropped. Before you see the result, the page decodes the request as a certificate authority would and checks its signature. The certificate authority decides key usage, validity and everything else; a CSR cannot choose them.
What is not in this version?
Creating a request for an existing key (the key is always new), Ed25519 keys (few public certificate authorities accept them), extensions other than the names, and certificate issuance itself: that is done by your certificate authority. To inspect an existing CSR or certificate, use the Certificate Decoder.
Can I use this tool through Matrix's API?
No. It exists so that your private key never leaves your device, so it runs only in your browser and is not offered on our API.
Is anything uploaded?
No. The page loads a small script into your browser and every calculation runs on your device. You can check this yourself in the browser's network panel: after the page has loaded there are no upload requests. Closing the tab discards what you entered.
Do I need an account or to pay?
No. These basic tools are free and store nothing on our servers. The only limits are the tool's own: up to 100 names per request; passphrases of at least 12 characters.
What does this page keep in my browser?
Nothing you open or type. While the tab is open, the tool pages keep a short list of the steps taken in it, in the tab's session storage: the step (page opened, started, succeeded, first success, used again or failed), the tool's name, the time, how many files were used and, for a failure, an error code; never a file name, the contents of a file or your text. It holds at most the latest 200 steps, and the browser deletes it when the tab closes. The page never sends it. Where a Report a problem button is shown, you can attach the last 20 steps to your report; nothing is attached unless you tick that box. In local storage the page keeps only choices you made: a Light or Dark theme until you choose System again, the language you picked with the EN / 中文 switch if it differs from your browser's language, and this tool in your recently used list if you switched that list on at the tools page.
Questions or problems
Found a problem or missing feature? Tell us. Please describe the steps; do not send confidential data.