Comment créer un certificat auto-signé pour Apache
ou Nginx
, et éventuellement, intégrer plusieurs sous-domaine.
Par exemple: mon-super-domaine.fr
, www.mon-super-domaine.fr
, www-lab.mon-super-domaine.fr
, ou simplement *.mon-super-domaine.fr
~~READMORE~~
Definir un domaine principal, le top:
# export NAME=mon-super-domaine.fr
Générer une clé secrète d'au moins 2048 bits…
# openssl genrsa -des3 -out $NAME.key 2048
(Entrer une passe-phrase provisoire (genre: “123456789”))
Générer un certificat “maitre” …
Important: le “Common Name” doit être coohérent.
# openssl req -new -key $NAME.key -out $NAME.csr
Enfin, virer la pass-phrase:
# cp $NAME.key $NAME.key.bak # openssl rsa -in $NAME.key.bak -out $NAME.key
# openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt
Voila:
“$NAME.key”
et “$NAME.crt”
sont les fichiers “clés”.
Il faut mettre plusieurs domaines dans le certificat de la façon suivante:
Créer un fichier “$NAME.domain_extensions.txt”
contenant :
[ mydomain_http ] nsCertType = server keyUsage = digitalSignature,nonRepudiation,keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer subjectAltName = @mydomain_http_subject [ mydomain_http_subject ] DNS.1 = sub1.mon-super-domaine.fr DNS.2 = sub2.mon-super-domaine.fr ... etc ... DNS.x = xxxx.mon-super-domaine.fr
On peut utiliser simplement un joker du style: “*.mon-super-domaine.fr” |
Et enfin:
# openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt -extfile $NAME.domain_extensions.txt -extensions mydomain_http
Voila.