Ceci est une ancienne révision du document !
Le principe est de gérer un seul certificat SSL pouvant être présenté par le reverse proxy pour l'ensemble des web services tournant localement. C'est ce que permet de faire le certificat SAN contenant un champ Subject Alternate Name pouvant contenir une liste de FQDN utilisée à la place du champ Common Name voir le wiki
Après plusieurs essais il ressort que:
Qui qu'il en soit, c'est en général une mauvaise idée de travailler directement avec localhost ou avec un TLD:
http://localhost
les services peuvent alors produire des erreurs ou se comporter différemment en local;
Pour ces raisons, il est préférable de générer un certificat sur des FQDN avec au minimum des noms de domaine deuxième niveau comme *.something.top
. Pour que le nom de domaine évoque bien que l'hébergement est local j'ai fait le choix d'utiliser *.host.me
# Depuis le répertoire de l'autorité de certification intermédiaire cd intermediate_ca/ export dn=service.localhost # Création de la clé privée openssl genrsa -out private/$dn.key 2048 chmod 400 private/$dn.key # Création de la CSR openssl req -new -config CSR.cnf -key private/$dn.key -out csr/$dn.csr
Préparer le fichier des extensions X509 en complétant la section [alt_names]
avec les FQDN
# Création du certificat openssl x509 -req -extfile build_cert_with_SAN.ext -days 30 -in csr/$dn.csr -CA certs/intermediate_ca.cert.pem -CAkey private/intermediate_ca.key -CAcreateserial -out certs_x509/$dn.crt # effacer la variable unset $dn
# via cURL curl --verbose --cacert ca-chain.cert.pem https://server.domain # via openssl true | openssl s_client -showcerts -CAfile ca-chain.cert.pem traefik.labinfo.mairie.local:443 2>/dev/null | openssl x509 -noout -text
Dans l' exemple ci-dessus le certificat de l'autorité de confiance n'est pas installé sur le système, les options --cacert pour curl et -CAfile pour openssl permettent de fournir les certificats des autorités de confiance afin de valider la chaîne de certification dans sa globalité.
Voir le wiki installer le certificat racine d'une autorité de confiance.