[Google-Chrome] Obtention de Chrome pour accepter le certificat localhost auto-signé


Answers

PAS POUR PROD

Collez simplement ceci dans votre chrome:

chrome://flags/#allow-insecure-localhost

Vous devriez voir le texte en surbrillance disant: Autoriser les certificats invalides pour les ressources chargées depuis localhost

Cliquez sur Enable .

Question

J'ai créé un certificat SSL auto-signé pour le CN localhost. Firefox accepte ce certificat après s'être initialement plaint à ce sujet, comme prévu. Toutefois, Chrome et IE refusent de l'accepter, même après avoir ajouté le certificat au magasin de certificats système sous Racines approuvées. Même si le certificat est répertorié comme correctement installé lorsque je clique sur "Afficher les informations de certificat" dans la fenêtre contextuelle HTTPS de Chrome, le certificat ne peut toujours pas être approuvé.

Que dois-je faire pour que Chrome accepte le certificat et arrête de se plaindre?




MISE À JOUR POUR CHROME 58+ (LIBÉRÉ le 2017-04-19)

À partir de Chrome 58, l'identification de l'hôte en utilisant uniquement commonName est en cours de suppression . Voir plus de discussion ici et bug tracker ici . Dans le passé, subjectAltName était utilisé uniquement pour les certificats multi-hôtes, de sorte que certains outils CA internes ne les incluaient pas.

Si vos certs auto-signés ont bien fonctionné dans le passé, mais ont soudainement commencé à générer des erreurs dans Chrome 58, c'est pourquoi.

Quelle que soit la méthode que vous utilisez pour générer votre certificat auto-signé (ou cert signé par une autorité de certification auto-signée), assurez-vous que le cert du serveur contient un subjectAltName avec les entrées / entrées DNS et / ou IP appropriées, même si un seul hôte .

Pour openssl, cela signifie que votre config aura quelque chose de similaire à ce qui suit pour un seul hôte:

[v3_req]
subjectAltName = DNS:example.com

ou pour plusieurs hôtes:

[v3_req]
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3

Dans la visionneuse de certificat de Chrome (qui a été déplacée vers l'onglet "Sécurité" sous F12), vous devriez la voir sous Extensions tant que nom de l'objet du Certificate Subject Alternative Name :

CONTOURNEMENT TEMPORAIRE

Il est possible de revenir à l'ancien comportement commonName jusqu'à Chrome 65 , en utilisant le paramètre suivant: EnableCommonNameFallbackForLocalAnchors

Sur Windows , ceci peut être réglé sur un seul PC en utilisant la commande de registre suivante (merci @Meengla):

reg add HKLM\Software\Policies\Google\Chrome /v EnableCommonNameFallbackForLocalAnchors /t REG_DWORD /d 1

Sur Mac , la commande suivante peut être utilisée (merci @BugsBunny):

defaults write com.google.Chrome EnableCommonNameFallbackForLocalAnchors -bool true

Sous Linux , créez un fichier de stratégie tel que /etc/opt/chrome/policies/managed/EnableCommonNameFallbackFor‌​LocalAnchors.json avec le contenu suivant: { "EnableCommonNameFallbackForLocalAnchors": true } (merci @seanf)

Vous trouverez plus de détails sur la définition de ces stratégies pour différentes plates-formes, y compris la définition via Windows GPO, en haut de la page liée, ainsi que le guide de modèle de stratégie Chromium et le guide Administrateurs .

Encore une fois, ces solutions de contournement sont temporaires jusqu'à la version 65!




I had to tweak the Chrome launcher on macosx and added below script. Saved it as below;

/Applications/Google\ Chrome.app/Contents/MacOS/Chrome.command

#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"

When I start Chrome with this script self-signed certificates are working without a problem. But don't browse the web with the browser launched with this script you will not be warned about invalid certificates!




Lorsque vous cliquez sur l'icône du petit cadenas barré à côté de l'URL, vous obtenez une boîte ressemblant à ceci:

Après avoir cliqué sur le lien Informations sur le certificat , vous verrez la boîte de dialogue suivante:

Il vous indique quel magasin de certificats est le bon, il s'agit du magasin Autorités de certification racines de confiance .

Vous pouvez utiliser l'une des méthodes décrites dans les autres réponses pour ajouter le certificat à ce magasin ou utiliser:

certutil -addstore -user "ROOT" cert.pem
  • ROOT est le nom interne du magasin de certificats mentionné précédemment.
  • cert.pem est le nom de votre certificat auto-signé.



Linux

Si vous utilisez Linux, vous pouvez également suivre les pages wiki officielles:

Fondamentalement:

  • cliquez sur l'icône de verrouillage avec un X,
  • choisissez l'information de certificat
  • aller à l'onglet Détails
  • Cliquez sur Export ... (enregistrer sous forme de fichier)

Maintenant, la commande suivante ajoutera le certificat (où YOUR_FILE est votre fichier exporté):

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE

Pour répertorier tous vos certificats, exécutez la commande suivante:

certutil -d sql:$HOME/.pki/nssdb -L

Si cela ne fonctionne toujours pas, vous pourriez être affecté par ce bogue: Problème 55050: Ubuntu SSL error 8179

PS Veuillez également vous assurer que vous avez libnss3-tools , avant de pouvoir utiliser les commandes ci-dessus.

Si vous ne l'avez pas, installez le par:

sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.

En prime, vous pouvez utiliser les scripts pratiques suivants:

$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'

Usage:

add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]

Dépannage

  • Exécutez Chrome avec le --auto-ssl-client-auth

    google-chrome --auto-ssl-client-auth




2017-06-27 newest method:

openssl req \
    -newkey rsa:2048 \
    -x509 \
    -nodes \
    -keyout yoursite.key \
    -new \
    -out yoursite.crt \
    -subj /CN=yoursite.dev \
    -reqexts SAN \
    -extensions SAN \
    -config <(cat /System/Library/OpenSSL/openssl.cnf \
        <(printf '[SAN]\nsubjectAltName=DNS:yoursite.dev')) \
    -sha256 \
    -days 3650

then, add yoursite.crt and yoursite.key to your nginx conf.

from: https://github.com/webpack/webpack-dev-server/issues/854




Cliquez n'importe où sur la page et tapez une BYPASS_SEQUENCE

" thisisunsafe " est un BYPASS_SEQUENCE pour Chrome version 65

" badidea " Chrome version 62 - 64.

" danger " utilisé pour travailler dans les versions antérieures de Chrome

Vous n'avez pas besoin de chercher un champ de saisie, il suffit de le taper. C'est étrange mais ça marche.

Je l'ai essayé sur Mac High Sierra.

Pour revérifier si ils l'ont changé à nouveau, allez à la dernière source de chrome

Pour rechercher BYPASS_SEQUENCE, il ressemble à cela pour le moment:

var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');

Maintenant, ils l'ont camouflé, mais pour voir le BYPASS_SEQUENCE réel, vous pouvez exécuter la ligne suivante dans une console du navigateur.

console.log(window.atob('dGhpc2lzdW5zYWZl'));



I was experiencing the same issue: I had installed the certificate in to Windows' Trusted Root Authorities store, and Chrome still refused the certificate, with the error ERR_CERT_COMMON_NAME_INVALID . Note that when the certificate is not properly installed in the store, the error is ERR_CERT_AUTHORITY_INVALID .

As hinted by the name of the error, this comment , and this question , the problem was lying in the declared domain name in the certificate. When prompted for the "Common Name" while generating the certificate, I had to enter the domain name I was using to access the site ( localhost in my case). I restarted Chrome using chrome://restart and it was finally happy with this new certificate.




WINDOWS JUIN / 2017 Windows Server 2012

J'ai suivi @Brad Parks réponse. Sous Windows, vous devez importer rootCA.pem dans le magasin Autorités de certificats racines de confiance.

J'ai fait les étapes suivantes:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

Où v3.ext est:

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

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

Ensuite, dans mon cas, j'ai une application web auto-hébergée, donc j'ai besoin de lier le certificat avec l'adresse IP et le port, le certificat devrait être sur mon magasin avec des informations de clés privées, donc j'ai exporté au format pfx.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

Avec la console mmc (Fichier / Ajouter ou supprimer des composants logiciels enfichables / Certificats / Ajouter / Compte informatique / Ordinateur local / OK) J'ai importé le fichier pfx dans le magasin personnel.

Plus tard, j'ai utilisé cette commande pour lier le certificat (vous pouvez également utiliser l'outil HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = Certificat Thumprint

appid = GUID (votre choix)

J'ai d'abord essayé d'importer le certificat "device.crt" sur les autorités de certificats racines de confiance de différentes façons, mais je reçois toujours la même erreur:

Mais j'ai réalisé que je devrais importer le certificat d'autorité de racine pas de certificat pour le domaine. J'ai donc utilisé la console mmc (Fichier / Ajouter ou supprimer des composants logiciels enfichables / Certificats / Ajouter / Compte informatique / Ordinateur local / OK) J'ai importé rootCA.pem dans le magasin Autorités de certificats racines de confiance.

Redémarrez Chrome et voilà, cela fonctionne.

Avec localhost:

Ou avec adresse IP:

La seule chose que je n'ai pas pu réaliser, c'est que le chiffre est obsolète (carré rouge sur la photo). L'aide est appréciée sur ce point.

Avec makecert, il n'est pas possible d'ajouter des informations SAN. Avec New-SelfSignedCertificate (Powershell), vous pouvez ajouter des informations SAN, cela fonctionne également.




Comme quelqu'un l'a noté, vous devez redémarrer tout le chrome, pas seulement les fenêtres du navigateur. Le moyen le plus rapide de le faire est d'ouvrir un onglet pour ...

chrome://restart




It didn't work for me when I tried to import the certificate in the browser... In chrome open Developer Tools > Security, and select View certificate. Click the Details tab and export it.

// LINUX

sudo apt-get install libnss3-tools 

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]

Run this command and if you see the file You've just imported You are good to go!

 certutil -d sql:$HOME/.pki/nssdb -L

// Windows

Start => run => certmgr.msc

On the left side select Trusted Root Certification Authorities => Personal. Click on actions tab => All actions/import then choose the file You exported before from the browser

Don't forget to restart chrome!!!

GOOD LUCK! ;)




I tried everything and what made it work: When importing, select the right category, namely Trusted Root Certificate Authorities :

(sorry it's German, but just follow the image)




Ce post est déjà inondé de réponses, mais j'ai créé un script bash basé sur certaines des autres réponses afin de faciliter la génération d'un certificat TLS auto-signé valide dans Chrome (Testé dans Chrome 65.x). J'espère que c'est utile aux autres.

script bash auto-signé-tls

Après avoir installé et approuvé le certificat, n'oubliez pas de redémarrer Chrome ( chrome://restart)




SSL / HTTPS localhost fix on the mac / osx:

  1. Click the red lock with the cross in your address bar when trying to open your https localhost environment. There'll open a window with some information about the certificate.

  2. Click on "Details" information window

  3. The chrome Developer tools opens on the tab 'Security'. Click on View Certificate . The certificate image
  4. Add it to your 'System' keychain (not your 'login' keychain which is selected by default).

  5. Open your keychain (again) and find the certificate. Click on it and make sure you "Trust" all.

  6. Restart chrome and it should work.




Pour un environnement de test

Vous pouvez utiliser --ignore-certificate-errors comme paramètre de ligne de commande lors du lancement de chrome (Travailler sur la version 28.0.1500.52 sur Ubuntu).

Cela l'amènera à ignorer les erreurs et à se connecter sans avertissement. Si vous avez déjà une version de chrome en cours d'exécution, vous devrez la fermer avant de la relancer depuis la ligne de commande, sinon elle ouvrira une nouvelle fenêtre mais ignorera les paramètres.

Je configure Intellij pour lancer le chrome de cette façon lors du débogage, car les serveurs de test n'ont jamais de certificats valides.

Je ne recommanderais pas une navigation normale comme celle-ci, car les vérifications de certificats sont une fonctionnalité de sécurité importante, mais cela peut être utile pour certains.




Links