web-dev-qa-db-fra.com

Erreur Chrome NET :: ERR_CERT_AUTHORITY_INVALID sur un certificat auto-signé sur LocalHost

J'essaye d'installer un environnement de développement sur mon PC local. Étant donné que le site Web de production prend en charge HTTPS (qui ne l’a pas fait ces jours-ci?), Je souhaite également que cela soit disponible sur le serveur local Je pensais que ce serait facile, mais non.

J'ai une installation XAMP et tout est configuré pour pouvoir accéder au site Web. Cependant, chaque fois que je vais sur une page du site localement, je reçois l'avertissement chrome:

NET :: ERR_CERT_AUTHORITY_INVALID

J'ai suivi le fil suivant pour essayer de le résoudre:

Amener Chrome à accepter le certificat auto-signé localhost

J'ai également créé le certificat avec la section de nom d'alternative de sujet (SAN) appropriée, basée sur ceci:

https://deliciousbrains.com/https-locally-without-browser-privacy-errors/

Après cela, j'ai généré le fichier CER ou P7B et l'ai importé dans Chrome. J'ai redémarré Apache et Chrome.

Je mets le certificat dans les autorités de certification racine de confiance. D'une certaine manière, Chrome a toutefois décidé de le placer dans les autorités de certification racine intermédiaires ...

J'utilise Chrome 61, j'avais la même chose en 60.

Je ne parviens donc pas à installer un certificat auto-signé et continue à recevoir cet avertissement qui rend fondamentalement impossible le développement sur localhost ...

Je comprends que cette signature automatique n'est pas vraiment fiable, mais qu'il doit y avoir un moyen de se développer hors connexion? Cela n'a pas de sens que nous devions désormais créer des sites Web en ligne? ...

Des idées?

18
E.S.

Voici mes instructions à l'aide de l'outil KeyStore Explorer.

Les 2 choses qui me manquaient lorsque j'ai créé le CERT étaient:

  • AKID (Authority Key Identifier) ​​- sélectionnez le même "CN =" que vous avez utilisé lors de sa création.
  • Ajout dans l'option "Contraintes de base" (ne sélectionnez pas "est une autorité de certification")

Sans ces deux éléments, Chrome émettra des avertissements/des erreurs même lorsque vous aurez installé le certificat auto-signé dans votre magasin de confiance PKI MS-CAPI (en tant qu '"autorité racine de confiance").

Voici les étapes que j'ai utilisées.

  1. Instructions utilisant KSE (KeyStore Explorer)
  2. Créer un JKS
  3. Création d'un certificat auto-signé
  4. Ouvrez KeyStore Explorer
  5. Fichier | Nouveau | JKS | D'accord
  6. Créez un mot de passe pour votre fichier JKS
  7. Fichier | Enregistrer sous ... | tapez votre mot de passe 
  8. Entrez le nom du fichier | D'accord
  9. Outils | Générer une paire de clés
  10. Sélectionner l'algorithme et la taille de la clé (c'est-à-dire 2048) | D'accord
  11. Sélectionnez la période de validité (5 ans) 
  12. Sélectionnez Nom (icône du livre) | Entrer dans les champs Nom | D'accord
  13. C'est à dire. “CN = localhost…”
  14. Ajouter des extensions (très important), cela détermine le type de certificat et son utilisation. Cet exemple concerne un certificat de serveur standard avec SSL.
  15. Ajouter dans l'élément Utilisation de la clé
  16. Ajouter dans la case à cocher Options de signature numérique et de chiffrement de clé
  17. Ajouter dans les options EKU (Extended Key Usage)
  18. Sélectionnez les deux options suivantes:
  19. Authentification du client Web TLS
  20. Authentification du serveur Web TLS
  21. Ajouter dans les SAN (Nom alternatif du sujet)
  22. Ajoutez tous les noms DNS et adresses IP nécessaires (le cas échéant) pour lesquels ce serveur sera utilisé. (répétez pour toutes les valeurs souhaitées) (par exemple, 127.0.0.1 et localhost (ou)
  23. Cela ressemblera à quelque chose comme ça quand c'est fait
  24. Lorsque cela est fait, vous verrez tous les champs avec les OID (identificateurs d'objet) répertoriés | Ok | D'accord
  25. Ajouter dans le AKID (Identifiant de clé d'autorité)
  26. Ajouter des extensions "+"
  27. Ajouter un type de poste | Identifiant de clé d'autorité
  28. Sélectionnez l'émetteur de certificat d'autorité du CN que vous avez créé ci-dessus (.e.g "CN = localhost ...") | D'accord
  29. Ajouter dans "Contraintes de base" (ne pas cocher "Le sujet est une autorité de certification")
  30. Lorsque vous avez terminé, vous verrez les éléments énumérés ci-après: cliquez sur "OK"
  31. Remarque: les contraintes de base et AKID (Identificateur de clé d'autorité) sont nécessaires pour que le navigateur Chrome puisse valider le certificat auto-signé en tant que certificat de confiance. 
  32. Sinon, vous verrez des messages d'avertissement ou d'erreur même après que vous ayez ajouté ce certificat, de manière explicite, à vos certificats MS-CAPI Trusted Root.
  33. Entrez l'alias du nom de la paire de clés que vous souhaitez utiliser.
  34. Entrez le mot de passe de la clé privée
  35. * Remarque: ce mot de passe DOIT être le même que le mot de passe du fichier de clés JKS, sinon Java peut échouer en mode silencieux lorsque vous essayez d'utiliser ce certificat.
  36. Vous devriez voir un message indiquant le succès. | D'accord 
  37. Puis, enregistrez le fichier | sauvegarder
5
atom88

J'ai corrigé le même problème après this

Le problème semblait être lié à la création du certificat.

Le code ci-dessous provient du site ci-dessus. 

#!/usr/bin/env bash
mkdir ~/ssl/
openssl genrsa -des3 -out ~/ssl/rootCA.key 2048
openssl req -x509 -new -nodes -key ~/ssl/rootCA.key -sha256 -days 1024 -out ~/ssl/rootCA.pem


#!/usr/bin/env bash
Sudo openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

Sudo openssl x509 -req -in server.csr -CA ~/ssl/rootCA.pem -CAkey ~/ssl/rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

fichier server.csr.cnf

[req]
default_bits = 2048
Prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
emailAddress=your-administrative-address@your-awesome-existing-domain.com
CN = localhost

fichier v3.ext

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

[alt_names]
DNS.1 = localhost
2
Temp O'rary

Il existe un excellent utilitaire graphique basé sur Java que j'utilise pour créer et manipuler tout ce que PKI appelle l'explorateur KeyStore. Tellement plus facile que toutes les options de ligne de commande:

http://keystore-Explorer.org/

1
atom88