HomeGuides › Certificates

The CSR field that stopped working in 1999

Every form puts Common Name first and no browser has read it for years. Meanwhile, where the private key was generated is the only question worth asking about a CSR tool.

The question to ask about any CSR tool

Where does the private key come from?

A certificate signing request works by being signed with the key it describes. That signature is the proof you hold the key, and it is the reason the key itself never has to travel anywhere. The request is public; the key is not.

A great many online CSR generators produce the key pair on their server and hand it back to you over the wire. Every one of those has held the private key for a certificate you are about to put in front of the internet, and the only safe response is to treat that key as compromised and start again.

Browsers have had a proper cryptographic API since 2014. There is no technical reason to generate a key anywhere but on the device that will use it.

Common Name stopped working a long time ago

Every CSR form puts Common Name first. Every tutorial fills it with a hostname. No browser has looked at it for years.

RFC 2818 deprecated Common Name for hostname matching in 1999. Chrome removed the last of its support in version 58, in 2017, and the other browsers had already gone. What gets checked is the Subject Alternative Name extension.

The consequence is a specific and annoying failure mode. The request looks right, the CA issues happily, the certificate installs, and the browser shows a name mismatch — pointing at the certificate rather than at the request that caused it. The mistake is made at CSR time and discovered at deployment time, usually by somebody else.

Most public CAs paper over this by copying the CN into the SAN list. That is a courtesy and not a guarantee; internal CAs frequently do not bother. Put every hostname in the SAN list and treat the CN as decoration.

A wildcard is narrower than it looks

A wildcard matches exactly one label, and never the bare domain.

*.example.com covers www.example.com and api.example.com. It does not cover a.b.example.com — that is two labels. And it does not cover example.com itself, which is the one that catches people: a site served at both the apex and its subdomains needs two SAN entries, and a wildcard certificate that half-works is almost always missing the apex.

Fields that will get your request rejected

Organisational Unit

The CA/Browser Forum prohibited OU in publicly trusted certificates from September 2022. It was unvalidated free text that looked authoritative, which is a bad combination in a document whose entire purpose is asserting verified facts. Public CAs now reject requests containing it. Internal CAs do not care.

The country code

Exactly two letters, ISO 3166-1 alpha-2. The recurring mistake is UK, which is reserved but unassigned — the code for the United Kingdom is GB. CAs reject UK, and the error message is rarely helpful about why.

RSA or ECDSA

ECDSA P-256 is the better default for anything new: security comparable to RSA 3072, far smaller keys and signatures, faster handshakes, and support everywhere that matters.

RSA 2048 is the safe choice when something old is in the path. Universally accepted, and slower in a way nobody notices.

RSA 4096 costs real time per handshake for a security margin that ECDSA reaches far more cheaply. Not wrong, but rarely the best answer.

Check it yourself

You should not take any tool's word for what is in a CSR, including this one. One command reads it back:

openssl req -in yourfile.csr -noout -text -verify

That prints the subject, the alternative names and the key parameters, and confirms that the signature over the request is genuinely valid — which also proves the request matches a key you hold.

It is worth knowing that this is exactly how the tool behind this guide is tested. Its own test suite generates a request for every supported algorithm on every build and hands each one to openssl to verify. That is not a formality: it caught two real encoding bugs that reading the code had not. One dropped a mandatory byte from every signature; the other mis-encoded object identifiers whose first two components sum to 128 or more. Both produced output that looked entirely plausible.

What a CSR cannot do

It does not issue anything. Only a certificate authority turns a request into a certificate, and what it will accept — which fields, which key sizes, what validation you must pass — is the CA's policy.

It also carries no promise about the key's fate afterwards. A tool that claims to erase a private key from memory is guessing: JavaScript provides no way to guarantee it. The honest position is that the key exists in browser memory until the browser reclaims it, that it never left the device, and that saving it somewhere safe is your job.

Frequently asked questions

What is the most important thing about a CSR tool?

Where the private key is generated. A CSR proves you hold a key by being signed with it, so the key never needs to travel. Many online generators create the key on their server, and any key that has been to somebody else's server should be treated as compromised.

Why does my certificate show a name mismatch when the Common Name is correct?

Because browsers do not read Common Name. RFC 2818 deprecated it for hostname matching in 1999 and Chrome removed support in version 58. What is checked is the Subject Alternative Name extension. The mistake is made when the CSR is built and discovered when the certificate is deployed.

Do public CAs copy the Common Name into the SAN list?

Most do, as a courtesy. It is not a guarantee and internal CAs frequently do not. Put every hostname in the SAN list rather than relying on it.

Does *.example.com cover example.com?

No. A wildcard matches exactly one label, so it covers www.example.com but not a.b.example.com, and never the bare example.com. If the apex is served too it needs its own SAN entry — the missing apex is the usual reason a wildcard certificate half-works.

Why was my request rejected for containing an Organisational Unit?

The CA/Browser Forum prohibited OU in publicly trusted certificates from September 2022, because it was unvalidated free text that looked authoritative. Public CAs reject it; internal CAs do not care.

What country code should the United Kingdom use?

GB. UK is reserved but unassigned in ISO 3166-1, and CAs reject it — usually with an unhelpful error.

Should I choose RSA or ECDSA?

ECDSA P-256 for anything new: comparable to RSA 3072 with smaller keys and faster handshakes. RSA 2048 when something old is involved. RSA 4096 costs real time per handshake for a margin ECDSA reaches more cheaply.

How do I check a CSR without trusting the tool that made it?

openssl req -in yourfile.csr -noout -text -verify. It prints the subject, the alternative names and the key parameters, and confirms the signature over the request is valid.

Open the CSR Generator →