Récemment, Chrome a cessé de travailler avec mes certificats SSL auto-signés et pense qu'ils ne sont pas sécurisés. Quand je regarde le certificat dans l'onglet DevTools | Security
, je peux voir qu'il est écrit
Autre nom de sujet manquant Le certificat pour ce site ne ne pas contenir d’extension Subject Alternative Name contenant un domaine nom ou adresse IP.
Erreur de certificat La chaîne de certificats du site pose des problèmes (net :: ERR_CERT_COMMON_NAME_INVALID).
Comment puis-je réparer cela?
Pour résoudre ce problème, vous devez fournir un paramètre supplémentaire à openssl
lors de la création du certificat.
-sha256 -extfile v3.ext
où v3.ext
est un fichier semblable à celui-ci, avec %%DOMAIN%%
remplacé par le même nom que votre Common Name
. Plus d'infos ici et ici . Notez que vous définissez généralement Common Name
et %%DOMAIN%%
sur le domaine pour lequel vous essayez de générer un certificat. Donc, si c'était www.mysupersite.com
, vous l'utiliseriez pour les deux.
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
Autre remarque: si vous essayez uniquement d'empêcher Chrome de générer des erreurs lors de l'affichage d'un certificat auto-signé, vous pouvez indiquer à Chrome d'ignorer toutes les erreurs SSL pour TOUS les sites en le démarrant avec un option de ligne de commande spéciale, comme détaillé ici sur SuperUser
J'ai créé un script bash pour faciliter la génération de certificats TLS auto-signés et valides dans Chrome.
Après avoir installé les certificats, assurez-vous de redémarrer chrome (chrome://restart
). Testé sur Chrome 65.x
et il fonctionne toujours.
Un autre outil (beaucoup plus robuste) qui vaut la peine d'être testé est le toolkit cfssl
de CloudFlare:
La solution suivante a fonctionné pour moi sur chrome 65 ( réf ) -
Créez un fichier de configuration OpenSSL (exemple: req.cnf)
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
Prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = company.net
Créer le certificat référençant ce fichier de configuration
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
-keyout cert.key -out cert.pem -config req.cnf -sha256
J'utilise simplement le paramètre -subj
en ajoutant l'adresse IP de la machine. Donc résolu avec une seule commande.
Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt
Vous pouvez ajouter d'autres attributs tels que C, ST, L, O, OU, emailAddress pour générer des certs sans y être invité.
Faites une copie de votre configuration OpenSSL dans votre répertoire personnel:
cp /System/Library/OpenSSL/openssl.cnf ~/openssl-temp.cnf
ou sous Linux:
cp /etc/ssl/openssl.cnf ~/openssl-temp.cnf
Ajoutez le nom alternatif du sujet à openssl-temp.cnf
, sous [v3_ca]
:
[ v3_ca ]
subjectAltName = DNS:localhost
Remplacez localhost
par le domaine pour lequel vous souhaitez générer ce certificat.
Générer un certificat:
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-config ~/openssl-temp.cnf
-keyout /path/to/your.key -out /path/to/your.crt
Vous pouvez ensuite supprimer openssl-temp.cnf
sur MAC à partir de chrome Version 67.0.3396.99 mon certificat auto-signé s’est arrêté de fonctionner.
la régénération avec tout ce qui est écrit ici n'a pas fonctionné.
METTRE À JOUR
eu l'occasion de confirmer que mon approche fonctionne aujourd'hui :). Si cela ne fonctionne pas pour vous assurez-vous que vous utilisez cette approche
v3.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step>
$
copié à partir d'ici https://ksearch.wordpress.com 2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
FIN MISE À JOUR
enfin, j'ai pu voir la sécurité verte uniquement lorsque supprimé mon certificat de système, et ajouté il en local trousseau. (s'il y en a un, déposez-le d'abord). Je ne sais pas si cela a de l'importance, mais dans mon cas, j'ai téléchargé le certificat via chrome et vérifié que la date de création est aujourd'hui - c'est donc celui que je viens de créer.
j'espère que cela sera utile pour quelqu'un qui passe comme une journée là-dessus.
ne met jamais à jour chrome!
J'ai été capable de me débarrasser de (net :: ERR_CERT_AUTHORITY_INVALID) en modifiant la valeur DNS.1 du fichier v3.ext
[noms alt.] DNS.1 = nomdomaine.com
Changez le nom de domaine.com avec votre propre domaine.