web-dev-qa-db-fra.com

Certificat SSL auto-signé non valide - "Autre nom de sujet manquant"

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?

68
Brad Parks

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

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.

v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

Remarque: les scripts qui traitent de ce problème et vous pouvez trouver ici des certificats SSL entièrement fiables à utiliser dans Chrome, Safari et à partir de clients Java }

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

78
Brad Parks

J'ai créé un script bash pour faciliter la génération de certificats TLS auto-signés et valides dans Chrome. 

script bash auto-signé-tls

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:

cfssl

14
Logan

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
13
Anshul

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é.

4
Ludwig
  • 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

0
Vic Seedoubleyew

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!

0
user2932688

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.

0
Jun See