mirror of
https://github.com/FiloSottile/mkcert.git
synced 2026-04-25 05:26:03 +03:00
[GH-ISSUE #205] Why subject doesn't contain CN for generated certs? #130
Labels
No labels
TLS stack issue
Windows
bug
duplicate
duplicate
enhancement
help wanted
help wanted
pull-request
question
question
root store
waiting for info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/mkcert#130
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @shadyabhi on GitHub (Oct 10, 2019).
Original GitHub issue: https://github.com/FiloSottile/mkcert/issues/205
The typical generated cert via mkcert has subject as:-
While most web certs also have a CommonName attribute.
Is there a reason behind this design choice?
I can see that CommonName is ignored while creating the cert.
github.com/FiloSottile/mkcert@df15e0c1ef/cert.go (L61-L64)Later, for PKCS#12, there's a CommonName added but not for usual default options, why?
@FiloSottile commented on GitHub (Oct 13, 2019):
Common Name has been deprecated for about 20 years, and is now ignored by major X.509 verifiers. It's an overloaded unconstrained field that should stop being used for web certificates.
Unfortunately, IIS and iOS use it in their UIs, so mkcert sets it in the root and in PKCS#12 certificates.
@shadyabhi commented on GitHub (Oct 14, 2019):
@FiloSottile Would you accept a PR to add CN if the user needs it or is that out of scope for this project and the direction it wants to head in?
My use-case:-
I'm writing tests and used this amazing utility to create test certs. My production certs have a
CNfield and I would like the same to exist in test certs too. It's a valid point that it's been deprecated but all major companies still have certs that have CN field in the subject, until today. In my opinion, it should be provided as an option if the user needs it.@FiloSottile commented on GitHub (Oct 16, 2019):
Unfortunately, making the certificates look like production certificates is out of scope. The CN is a fairly small change, but mkcert certificates are pretty opinionated, and mkcert would have to grow a large number of config options to allow everyone to make certificates similar to those they already have. I have seen a few forks made in these situations, and I think that's the way to go, as it gives you complete control over how the certificates look like.
@will commented on GitHub (Jun 1, 2023):
I was hoping to switch from my stack of incomprehensible
opensslcommands tomkcertto generate both server certs (this works) and also client certs (this does not work) to test my postgres driver.It is impossible to use
mkcertto generate postgres client certs because postgres uses the cn attribute to map the provided client cert to the requested database user name https://www.postgresql.org/docs/current/auth-cert.htmlI appreciate that this is an opinionated tool, and you do not want to support this feature. But I figured maybe this was a use of cn you were not aware of. I will return to my nightmare stack of openssl commands.
@marcgardent commented on GitHub (Oct 1, 2024):
"Common Name has been deprecated for about 20 years, and is now ignored by major X.509 verifiers. "
curl, chrome and lot of program havent yet received the mkcert's service note.
In additionnaly, we install the ROOT certificate in the system store to able to suppress SSL errors.
this no make sense if the CN not set also.
Windows alternative with valid certificate! :) OMG....
@ToxicMushroom commented on GitHub (Dec 27, 2025):
Could you provide a link ?
I found https://datatracker.ietf.org/doc/html/rfc2818#section-3.1but it is about http over TLS, but how does that apply to strange technologies like LDAPS ?