Amener Chrome à accepter le certificat auto-signé localhost
j'ai créé un certificat SSL auto-signé pour le CN localhost. Firefox accepte CE certificat après s'en être initialement plaint, comme prévu. Chrome et IE, cependant, refusent de l'accepter, même après avoir ajouté le certificat à la réserve de certificats système sous Trusted Roots. Même si le certificat est correctement installé lorsque je clique sur "View certificate information" dans le popup HTTPS de Chrome, il insiste sur le fait que le certificat n'est pas fiable.
Que dois-je faire pour que Chrome accepte le certificat et cesse de s'en plaindre?
30 réponses
cela a fonctionné pour moi:
- en utilisant Chrome, cliquez sur une page de votre serveur via HTTPS et continuez après la page d'avertissement rouge (en supposant que vous n'avez pas déjà fait cela).
- Ouvrir
Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates
. - cliquez sur l'onglet
Authorities
et faites défiler vers le bas pour trouver votre certificat sous le nom de l'organisme que vous avez donné au certificat. - sélectionnez-le, Cliquez sur Modifier ( NOTE : dans les versions récentes de Chrome, le bouton est maintenant" avancé "au lieu de" modifier"), cochez toutes les cases et cliquez sur OK. Vous devrez peut-être redémarrer Chrome.
vous devriez obtenir le joli cadenas vert sur vos pages maintenant.
EDIT: j'ai essayé à nouveau sur une nouvelle machine et le certificat n'est pas apparu sur la fenêtre Gérer les certificats juste en continuant à partir de la page rouge des certificats non fiables. J'ai dû faire la
- sur la page avec le certificat non validé (
https://
est barré en rouge), cliquez sur la serrure > informations du certificat. NOTE: sur les nouvelles versions de chrome, vous devez ouvrirDeveloper Tools > Security
, et sélectionnerView certificate
. - cliquez sur le
Details tab > Export
. ChoisissezPKCS #7, single certificate
comme format de fichier. - puis suivez mes instructions originales pour accéder à la page Gérer les certificats. Cliquez sur le
Authorities tab > Import
et choisissez le fichier que vous avez exporté le certificat, et assurez-vous de choisirPKCS #7, single certificate
comme type de fichier . - si on vous invite à la boutique de certification, choisissez Autorités de certification racine de confiance
- Cochez toutes les cases et cliquez sur OK. Redémarrez Google Chrome.
NON DÉNOMMÉS
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 à partir de localhost
cliquez sur Enable
.
sur le Mac, vous pouvez utiliser L'utilitaire D'accès au porte-clés pour ajouter le certificat auto-signé au porte-clés du système, et Chrome l'acceptera. J'ai trouvé les instructions étape par étape ici:
Google Chrome, Mac OS X et les certificats SSL auto-signés
en gros:
- double-cliquez sur l'icône de verrouillage avec un X et faites glisser-déposer l'icône de certificat sur le bureau,
- ouvrir ce fichier (se terminant par un .cer extension); Ceci ouvre l'application Porte-clés qui vous permet d'approuver le certificat.
MISE À JOUR POUR CHROME 58+ (SORTIE 2017-04-19)
à partir de Chrome 58, identifiant l'hôte en utilisant seulement commonName
est supprimé . Voir plus loin discussion ici et bug tracker ici . Dans le passé, subjectAltName
était utilisé uniquement pour les certs multi-hôtes, de sorte que certains outils CA internes peuvent ne pas les inclure.
si votre les certs auto-signés fonctionnaient bien dans le passé mais ont soudainement commencé à générer des erreurs dans Chrome 58, c'est pourquoi.
donc, quelle que soit la méthode que vous utilisez pour générer votre certificat auto-signé (ou un certificat signé par une CA auto-signée), assurez-vous que le certificat du serveur contient un subjectAltName
avec la bonne DNS
et/ou IP
entrée/entrées, même si c'est juste pour un hôte unique .
pour openssl, cela signifie votre config OpenSSL ( /etc/ssl/openssl.cnf
sur Ubuntu) devrait avoir quelque chose de similaire à ce qui suit pour un seul hôte:
[v3_ca] # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com
ou pour hôtes multiples:
[v3_ca] # and/or [v3_req], if you are generating a CSR
subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3
dans le lecteur Cert de Chrome (qui est passé à l'onglet "Sécurité" Sous F12) , vous devriez le voir listé sous Extensions
comme Certificate Subject Alternative Name
:
modifier: solution de contournement temporaire ci-dessous a été supprimé comme prévu dans Chrome 66 (publié en avril 2018)
TEMPORARY WORKAROUND
il est possible de revenir à l'ancien commonName
comportement jusqu'à Chrome 65 , en utilisant le réglage suivant: EnableCommonNameFallbackForLocalanchors
sous Windows , cela peut être configuré sur un seul PC en utilisant la commande suivante du registre (thanks @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
sur Linux , créer un fichier de politique tel que /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.json
avec le contenu: { "EnableCommonNameFallbackForLocalAnchors": true }
(merci @seanf)
Plus de détails sur l'établissement de ces politiques pour diverses plates-formes, y compris leur établissement via Windows GPO, peuvent être trouvés dans le haut de la page liée ainsi que le Chromium policy template guide et le administrateurs guide .
encore une fois, ces solutions de rechange sont temporaire jusqu'à la version 65!
mise à jour 11/2017: cette réponse ne fonctionnera probablement pas pour la plupart des nouvelles versions de Chrome.
mise à jour 02/2016: de meilleures Instructions pour les utilisateurs Mac peuvent être trouvées ici .
-
sur le site que vous souhaitez ajouter, droit-cliquez l'icône de verrouillage rouge dans la barre d'adresse:
-
Cliquez sur l'onglet connexion , puis cliquez sur informations de certificat
-
cliquez sur l'onglet détails , le bouton Copiez pour Fichier... . Cela ouvrira l'Assistant D'exportation de certificat, cliquez sur suivant pour accéder à l'écran format de fichier D'exportation .
-
choisir DER encoded binaire X. 509 (.CER) , cliquez sur suivant
-
, Cliquez Sur Parcourir"... et enregistrez le fichier sur votre ordinateur. Un nom descriptif. Cliquez sur Suivant , puis cliquez sur Terminer .
-
ouvrez les paramètres Chrome, faites défiler vers le bas, et cliquez sur afficher les paramètres avancés...
-
sous HTTPS/SSL , cliquez sur Gérer les certificats...
-
cliquez sur l'onglet Autorités de Certification racine de confiance , puis cliquez sur L'importation ... bouton. Ceci ouvre le magicien D'importation de certificat. Cliquez sur suivant pour accéder au fichier D'importation écran.
-
, Cliquez Sur Parcourir"... et sélectionnez le fichier de certificat que vous avez sauvegardé plus tôt, puis cliquez sur suivant .
-
sélectionnez placez tous les certificats dans le magasin suivant . Le magasin sélectionné doit être Autorités de Certification Racine approuvées . Si ce n'est pas le cas, cliquez sur ... et sélectionnez-le. Cliquez sur Suivant et Terminer
-
, Cliquez sur Oui sur l'avertissement de sécurité.
-
Redémarrez Chrome.
-
Linux
si vous utilisez Linux, vous pouvez aussi suivre ces pages wiki officielles:
en gros:
- , cliquez sur l'icône de verrouillage avec un X,
- choisir les renseignements sur le certificat
- allez à l'onglet Détails
- cliquez sur Exporter... (enregistrer un fichier)
maintenant, la commande suivante va ajouter le certificat (où VOTRE_FILE est votre fichier exporté):
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
pour lister tous vos certificats, lancez la commande suivante:
certutil -d sql:$HOME/.pki/nssdb -L
S'il ne fonctionne toujours pas, vous pouvez être affecté par ce bug: numéro 55050: erreur Ubuntu SSL 8179
P. S. Veuillez également vous assurer que vous avez libnss3-tools
, avant de pouvoir utiliser les commandes ci-dessus.
Si vous n'avez pas, veuillez l'installer 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 -i
$ 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 :443 | sed -ne '/BEGIN CERT/,/END CERT/p'
Utilisation:
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
dépannage
-
Run Chrome avec
--auto-ssl-client-auth
parametergoogle-chrome --auto-ssl-client-auth
cliquez n'importe où sur la page et tapez A BYPASS_SEQUENCE
thisisunsafe
" is a BYPASS_SEQUENCE for Chrome version 65
" badidea
" version de Chrome 62 - 64.
danger
"utilisé pour travailler dans les versions précédentes de Chrome
vous n'avez pas besoin de chercher le champ d'entrée, tapez-le simplement. Il se sent étrange, mais c'est le travail.
j'ai essayé sur Mac High Sierra.
pour vérifier s'ils l'ont changée de nouveau, passez au chrome le plus récent code Source
pour chercher BYPASS_SEQUENCE, au moment où il ressemble à cela:
var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl');
maintenant ils l'ont camouflé, mais pour voir la vraie BYPASS_SEQUENCE vous pouvez lancer la ligne suivante dans une console de navigateur.
console.log(window.atob('dGhpc2lzdW5zYWZl'));
sur le Mac, vous pouvez créer un certificat qui est entièrement fiable par Chrome et Safari au niveau du système en faisant ce qui suit:
# create a root authority cert
./create_root_cert_and_key.sh
# create a wildcard cert for mysite.com
./create_certificate_for_domain.sh mysite.com
# or create a cert for www.mysite.com, no wildcards
./create_certificate_for_domain.sh www.mysite.com www.mysite.com
ce qui précède utilise les scripts suivants, et un fichier de soutien v3.ext
, à éviter sujet nom alternatif erreurs manquantes
si vous voulez créer un nouveau certificat auto-signé qui est entièrement fiable en utilisant votre propre autorité racine, vous pouvez le faire en utilisant ces scripts.
create_root_cert_and_key.sh
#!/usr/bin/env bash
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
create_certificate_for_domain.sh
#!/usr/bin/env bash
if [ -z "" ]
then
echo "Please supply a subdomain to create a certificate for";
echo "e.g. www.mysite.com"
exit;
fi
if [ ! -f rootCA.pem ]; then
echo 'Please run "create_root_cert_and_key.sh" first, and try again!'
exit;
fi
if [ ! -f v3.ext ]; then
echo 'Please download the "v3.ext" file and try again!'
exit;
fi
# Create a new private key if one doesnt exist, or use the xeisting one if it does
if [ -f device.key ]; then
KEY_OPT="-key"
else
KEY_OPT="-keyout"
fi
DOMAIN=
COMMON_NAME=${2:-*.}
SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
NUM_OF_DAYS=999
openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext
# move output files to final filenames
mv device.csr "$DOMAIN.csr"
cp device.crt "$DOMAIN.crt"
# remove temp file
rm -f device.crt;
echo
echo "###########################################################################"
echo Done!
echo "###########################################################################"
echo "To use these files on your server, simply copy both $DOMAIN.csr and"
echo "device.key to your webserver, and use like so (if Apache, for example)"
echo
echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt"
echo " SSLCertificateKeyFile /path_to_your_files/device.key"
v3.poste 1519110920"
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
un pas de plus - comment faire confiance aux certs signés dans Chrome / Safari
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = %%DOMAIN%%
pour permettre aux certificats auto-signés D'être entièrement fiables dans Chrome et Safari, vous devez importer une nouvelle autorité de certification dans votre Mac. Pour ce faire, suivez ces instructions, ou les instructions plus détaillées sur ce processus général sur le site mitmproxy :
- Ouvrez Trousseau D'Accès
- Choisir "Système" dans le "porte-clés" liste
- choisir "certificats" dans la "liste de la catégorie
- Choisir " Fichier | Importer Des Articles..."
- Naviguez vers le fichier créé ci-dessus, "rootCA.pem", sélectionnez-le et cliquez sur "Ouvrir"
- Sélectionnez votre nouveau certificat importé dans la liste" certificats".
- cliquez sur le bouton "i", ou cliquez avec le bouton droit de votre certificat, et choisissez "Get Info "
- étendre l'option" confiance
- Changement "Lors de l'utilisation de ce certificat", "Toujours faire Confiance"
- fermez la boîte de dialogue et on vous demandera votre mot de passe.
- fermer et rouvrir tous les onglets qui utilisent votre domaine cible, et il sera chargé en toute sécurité!
et en prime, si vous avez besoin de clients java pour faire confiance aux certificats, vous pouvez le faire en important vos certs dans le java keystore. Notez que ceci supprimera le cert du keystore s'il existe déjà, car il doit le mettre à jour au cas où les choses changeraient. Il bien sûr que le fait pour les certificats importés.
import_certs_in_current_folder_into_java_keystore.sh
KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";
function running_as_root()
{
if [ "$EUID" -ne 0 ]
then echo "NO"
exit
fi
echo "YES"
}
function import_certs_to_java_keystore
{
for crt in *.crt; do
echo prepping $crt
keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE;
keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
echo
done
}
if [ "$(running_as_root)" == "YES" ]
then
import_certs_to_java_keystore
else
echo "This script needs to be run as root!"
fi
si vous êtes sur un mac et ne pas voir l'onglet exportation ou comment obtenir le certificat cela a fonctionné pour moi:
- cliquez sur la serrure avant le https: / /
- allez à L'onglet" Connexion
-
Cliquez Sur "Information Sur Le Certificat "
Maintenant, vous devriez voir ceci:
-
Glisser ce petit certificat icône de votre bureau (ou ailleurs).
-
double-cliquez sur le .le fichier cer qui a été téléchargé, cela devrait l'importer dans votre porte-clés et ouvrir L'accès Porte-Clés à votre liste de certificats.
dans certains cas, cela suffit et vous pouvez maintenant rafraîchir la page.
sinon:
- double-cliquez sur le certificat nouvellement ajouté.
- dans la liste déroulante, remplacer" lorsque vous utilisez ce certificat "par" toujours en confiance"."
maintenant rechargez la page en question et il devrait être Problème résolu! Espérons que cette aide.
Modifier Wolph
pour rendre cela un peu plus facile, vous pouvez utiliser le script suivant ( source ):
-
Enregistrer la suite de script comme
whitelist_ssl_certificate.ssh
:#!/usr/bin/env bash -e SERVERNAME=$(echo "" | sed -E -e 's/https?:\/\///' -e 's/\/.*//') echo "$SERVERNAME" if [[ "$SERVERNAME" =~ .*\..* ]]; then echo "Adding certificate for $SERVERNAME" echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert else echo "Usage: "151900920" www.site.name" echo "http:// and such will be stripped automatically" fi
-
Rendre le script exécutable (à partir du shell):
chmod +x whitelist_ssl_certificate.ssh
-
exécutez le script pour le domaine que vous voulez (il suffit de copier/coller l'url complète des travaux):
./whitelist_ssl_certificate.ssh https://your_website/whatever
UPDATED Apr 3/2018
recommandé par L'équipe Chromium
"1519130920 Rapide" Super-Solution Facileil y a une phrase de contournement secrète qui peut être tapée dans la page d'erreur pour que Chrome procède malgré la erreur de sécurité: thisisunsafe (dans les versions précédentes de Chrome, type badidea , et même plus tôt, danger ). DO NOT USE THIS UNLESS YOU UNDERSTAND EXACTLY WHY YOU NEED IT!
Source:
(notez que window.atob('dGhpc2lzdW5zYWZl')
se résout en thisisunsafe
)
la dernière version de la source est @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js et la fonction window.atob
peuvent être exécutées dans une console JS.
pour le fond sur la raison pour laquelle L'équipe Chrome a changé la phrase de contournement (la première fois):
https://bugs.chromium.org/p/chromium/issues/detail?id=581189
Si tout le reste échoue
pour les one-offs rapides si L'option" Proceed Anyway "n'est pas disponible, ni la phrase de contournement ne fonctionne, ce hack fonctionne bien:
-
autoriser les erreurs de certificat de
localhost
en activant ce drapeau (notez que Chrome doit redémarrer après avoir changé la valeur du drapeau)):chrome://flags/#allow-insecure-localhost
(et le vote des réponses https://stackoverflow.com/a/31900210/430128 par @Chris)
-
si le site auquel vous voulez vous connecter est
localhost
, vous avez terminé. Sinon, configurer un tunnel TCP pour écouter sur le port 8090 localement et se connecter àbroken-remote-site.com
sur le port 443, s'assurer que vous avezsocat
installé et exécuter quelque chose comme ça dans une fenêtre de terminal:socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443
-
passer à https://localhost:8090 dans votre navigateur.
pour un environnement d'essai
vous pouvez utiliser --ignore-certificate-errors
comme paramètre de ligne de commande lors du lancement de chrome (travail sur la Version 28.0.1500.52 sur Ubuntu).
cela va l'amener à 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 relancer à partir de la ligne de commande ou elle ouvrira une nouvelle fenêtre mais ignorera les paramètres.
j'ai configuré Intellij pour lancer chrome de cette façon lors du débogage, car les serveurs de test n'ont jamais de certificats valides.
Je ne recommande pas une navigation normale comme celle-ci, car les vérifications de certificats sont une caractéristique de sécurité importante, mais cela peut être utile à certains.
comme quelqu'un l'a noté, vous devez redémarrer tout Chrome, pas seulement les fenêtres du navigateur. La façon la plus rapide de le faire est d'ouvrir une onglet à...
chrome://restart
WINDOWS JUN / 2017 Windows Server 2012
j'ai suivi la réponse de @Brad Parks. Sur Windows vous devez importer rootCA.pem dans les Certificats Racine de Confiance magasin d'Autorités.
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.poste:
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
alors, dans mon cas, j'ai une application web auto-hébergée, donc je dois lier certificat avec adresse IP et port, certificat devrait être sur mon magasin avec des informations 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/Ordinateurt Compte/LocalComputer/OK) j'ai importé le fichier pfx dans le magasin.
plus tard, j'ai utilisé cette commande pour lier le certificat (vous pouvez aussi 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)
D'abord j'ai essayé d'importer le dispositif de certificat".crt" sur les Certificats Racine de Confiance des Autorités de différentes manières, mais je suis toujours la même erreur:
mais je me suis rendu compte que je devais importer le certificat d'autorité racine pas le certificat pour le domaine. J'ai donc utilisé la console mmc (Fichier/Ajouter ou Supprimer des composants logiciels enfichables/Certificats/Ajouter/Ordinateurt Compte/LocalComputer/OK) j'ai importé rootCA.pem dans les Certificats Racine de Confiance magasin d'Autorités.
Redémarrez google Chrome et et voilà ça fonctionne.
avec localhost:
ou avec adresse IP:
le la seule chose que je n'ai pas pu réaliser est que, il a obsolète cipher (carré rouge sur l'image). L'aide est appréciée sur ce point.
avec makecert il n'est pas possible d'ajouter des informations de SAN. Avec New-self-Signedcertificate (Powershell) vous pouvez ajouter des informations SAN, cela fonctionne aussi.
êtes-vous sûr que l'adresse indiquée sur le site est la même que celle du certificat? J'ai eu les mêmes problèmes avec Chrome et un cert auto-signé, mais à la fin j'ai trouvé qu'il était juste incroyablement difficile à propos de la validation du nom de domaine sur le cert (comme il se doit).
Chrome n'a pas son propre magasin cert et utilise celui de Window. Toutefois, Chrome ne fournit aucun moyen d'importer des certs dans le magasin, donc vous devriez les ajouter via IE à la place.
installation de certificats dans Google Chrome
installation de certificats dans Internet Explorer
regardez aussi ceci pour quelques approches différentes de la création de certs auto-signés (je suppose que vous utilisez IIS comme vous ne l'avez pas mentionné).
j'ai suivi le processus d'utilisation de ce que bjnord a suggéré qui était: Google Chrome, Mac OS X et les certificats SSL auto-signés
ce qui est affiché sur le blog n'a pas fonctionné.
cependant, l'un des commentaires sur le blog était or:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt
Vous aurez besoin de suivre le blog sur comment obtenir le fichier cert, après cela, vous pouvez utiliser le la commande ci-dessus et devrait être bon pour aller.
en cliquant sur l'icône de verrouillage barrée à côté de L'URL, vous obtiendrez une boîte ressemblant à ceci:
après avoir cliqué sur le lien information sur le certificat , vous verrez le dialogue suivant:
il vous indique quel magasin de certificats est le bon, C'est le certification racine de confiance Autorités magasin.
Vous pouvez utiliser l'une des méthodes décrites dans les autres réponses pour ajouter le certificat à cet stocker ou d'utiliser:
certutil -addstore -user "ROOT" cert.pem
-
ROOT
est le Nom interne du magasin de certificats mentionné plus haut. -
cert.pem
est le nom de votre certificat auto-signé.
ce post est déjà inondé de réponses, mais j'ai créé un bash script basé sur certaines des autres réponses pour le rendre plus facile à générer un certificat TLS auto-signé valide dans Chrome (testé dans Chrome 65.x
). J'espère que c'est utile pour les autres.
après l'installation ( et confiance ) le certificat, n'oubliez pas de redémarrer Chrome ( chrome://restart
)
un autre outil à vérifier est la boîte à outils cfssl
de CloudFlare:
à partir de Chrome 58+ j'ai commencé à obtenir une erreur de certificat sur macOS en raison de SAN manquant. Voici comment obtenir la serrure verte sur la barre d'adresse à nouveau.
-
générer un nouveau certificat avec la commande suivante:
openssl req \ -newkey rsa:2048 \ -x509 \ -nodes \ -keyout server.key \ -new \ -out server.crt \ -subj /CN=*.domain.dev \ -reqexts SAN \ -extensions SAN \ -config <(cat /System/Library/OpenSSL/openssl.cnf \ <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \ -sha256 \ -days 720
-
Importer
server.crt
dans votre Trousseau de clés, puis double-cliquez sur le certificat, développez le Confiance , et sélectionnez Toujours Faire Confiance
rafraîchir la page https://domain.dev dans Google Chrome, donc la serrure Verte est de retour.
ça a marché pour moi. Voir: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc
dans la barre d'adresse, cliquez sur la petite serrure avec le X. Ceci affichera un petit écran d'information. Cliquez sur le bouton qui dit "Certificat d'Informations."
cliquez et faites glisser l'image sur votre bureau. On dirait un petit certificat.
double-cliquez dessus. Le Trousseau d'Accès de l'utilitaire. Entrez votre mot de passe pour le déverrouiller.
assurez-vous d'ajouter le certificat au porte-clés Système, pas le porte-clés login. Cliquez sur "Toujours faire confiance", même si cela ne semble pas faire quoi que ce soit.
Après qu'il a été ajouté, double-cliquez dessus. Vous devrez peut-être vous authentifier à nouveau.
étendre la section" confiance".
" lors de l'utilisation de ce certificat," défini à " toujours confiance"
2017-06-27 nouvelle méthode:
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
Ensuite, ajoutez votre site.crt et votresite.la clé de votre nginx conf.
de: https://github.com/webpack/webpack-dev-server/issues/854
j'ai tout essayé et ce qui l'a fait fonctionner: lors de l'importation, sélectionner la bonne catégorie, à savoir Trusted Root Certificate Authorities :
(désolé c'est en allemand, mais il suffit de suivre l'image)
j'ai dû modifier le lanceur Chrome sur macosx et j'ai ajouté le script ci-dessous. Enregistré comme ci-dessous;
/Applications / Google\ Chrome.app/Contents/MacOS / Chrome.commande
#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname ""151900920"")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"
lorsque je lance Chrome avec ce script, les certificats auto-signés fonctionnent sans problème. Mais ne naviguez pas sur le web avec le navigateur lancé avec ce script vous ne serez pas averti de non valide les certificats!
pour le développement sur Windows vous pouvez
ajouter à Chrome shortcut drapeau --ignore-certificate-errors
il s'attendait à ignorer les erreurs de certificat et à vous permettre d'accéder à des sites Web de certificats invalides.
Des instructions plus détaillées dans https://support.opendns.com/entries/66657664 .
je rencontrais le même problème: j'avais installé le certificat dans les autorités racine de confiance de Windows, et Chrome a toujours refusé le certificat, avec l'erreur ERR_CERT_COMMON_NAME_INVALID
. Notez que lorsque le certificat n'est pas correctement installé dans le magasin, l'erreur est ERR_CERT_AUTHORITY_INVALID
.
comme indiqué par le nom de l'erreur, ce commentaire , et cette question , le problème se trouvait dans le nom de domaine déclaré dans le certificat. lorsqu'on m'a demandé le" nom commun "pendant que je générais le certificat, j'ai dû entrer le nom de domaine que j'utilisais pour accéder au site ( localhost
dans mon cas). J'ai redémarré Chrome en utilisant chrome://restart
et il a finalement été heureux avec ce nouveau certificat.
j'ai corrigé ce problème pour moi-même sans changer les paramètres sur les navigateurs avec les certifications SSL appropriées. J'utilise un mac donc il a fallu une mise à jour du porte-clés pour mes certifications ssl. J'ai dû ajouter des noms alt sujets à la certification ssl pour que chrome l'accepte. À partir d'aujourd'hui, C'est pour le numéro de version Chrome: 62.0.3202.94
mon exemple sont faciles à utiliser les commandes et les fichiers de configuration:
ajouter ces fichiers et cet exemple en est une racine répertoire
ssl.conf
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
exécuter la commande pour créer la certification:
openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem -extensions req_ext -config ssl.conf -subj '/CN=localhost/O=Stackflow/C=US/L=Los Angeles/OU=StackflowTech'
pour macs uniquement pour ajouter certification de confiance (obligatoire):
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./certificate.pem
pour windows vous devez trouver comment vérifier nos certificats ssl localement indépendamment. Je N'utilise pas Windows. Désolé les gars de windows et les filles.
j'utilise un noeud.js server avec express.js n'a besoin que de ma clé et la certification avec quelque chose comme ceci:
app.js
const https = require('https');
const Express = require('express');
const fs = require('fs');
const app = new Express();
const server = https.createServer({
key: fs.readFileSync('./key.pem'),
cert: fs.readFileSync('./certificate.pem'),
}, app);
server.listen(3000);
je peux faire cela pour d'autres cadres d'arrière-plan dans le futur, donc je peux mettre à jour cet exemple pour d'autres dans le futur. Mais c'était ma solution pour le noeud.js pour ce problème. Effacer le cache du navigateur et lancer votre application sur https: / /
voici un exemple d'exécution https://localhost sur un noeud.js server pour les utilisateurs Mac:
https://github.com/laynefaler/Stack-Overflow-running-HTTPS-localhost
Bon Codage!
ça n'a pas marché pour moi quand j'ai essayé d'importer le certificat dans le navigateur... Dans GoogleChrome open Developer Tools > sécurité, et sélectionnez View certificate. Cliquez sur L'onglet Détails et exportez-le.
/ / LINUX
sudo apt-get install libnss3-tools
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]
lancez cette commande et si vous voyez le fichier que vous venez d'importer, vous pouvez y aller!
certutil -d sql:$HOME/.pki/nssdb -L
/ / Windows
Start => run => certmgr.msc
sur le côté gauche, sélectionnez Trusted Root Autorités De Certification = > Personnelles. Cliquez sur l'onglet actions = > toutes les actions / importer puis choisissez le fichier que vous avez exporté auparavant à partir du navigateur
n'oubliez pas de redémarrer chrome!!!
BONNE CHANCE! ;)
c'est quelque chose qui revient sans cesse -- surtout pour Google Chrome sur Mac OS X Yosemite!
heureusement, un de notre équipe de développement m'a envoyé ce lien aujourd'hui, et la méthode fonctionne de manière fiable, tout en vous permettant de contrôler pour quels sites vous acceptez les certificats.
jersully écrit:
si vous ne voulez pas vous embêter avec les certificats internes...
- Type
chrome://flags/
dans la barre d'adresse.- Faites défiler vers ou recherchez les décisions Remember pour passer par des erreurs SSL pour une durée spécifiée.
- sélectionnez Se souvenir pendant trois mois.
SSL / HTTPS localhost fix on the mac / osx:
-
cliquez sur la serrure rouge avec la croix dans votre barre d'adresse lorsque vous essayez d'ouvrir votre environnement https localhost. Il ouvrira une fenêtre avec des informations sur le certificat.
-
cliquez sur" Détails" fenêtre d'information
- les outils de développement chrome s'ouvre sur l'onglet "Sécurité". Cliquez sur voir le certificat . Le certificat de l'image
-
ajoutez-le à votre porte-clés 'System' (pas votre porte-clés 'login' qui est sélectionné par défaut).
-
ouvrez votre porte-clés (à nouveau) et trouvez le certificat. Cliquez dessus et assurez-vous que vous "faites confiance" à tous.
-
redémarrez chrome et ça devrait marcher.
Que dois-je faire pour que Chrome accepte le certificat et cesse de s'en plaindre?
vous devez créer une ICP avec;
1)auto-signé Root CA.
2) certificat sub / intermédiaire [signé par L'AC racine].
3) certificat normal / d'entité finale [signé soit par L'AC racine, soit par une sous-AC]
(commonName ou subjectAltName (SAN) en tant que localhost)
(également inclure https://localhost/ comme l'URI de SAN).
4) l'Importation / l'Installation de cette autorité de certification Racine de votre système d'exploitation Windows (parce que vous l'avez mentionné, c'est à dire. Google Chrome utilise les mêmes ressources tout en recherchant la chaîne de certificats - https://www.chromium.org/Home/chromium-security/root-ca-policy ) comme "Autorités de Certification racine de confiance".
5) Installez ce certificat d'entité finale comme votre certificat de serveur web, et il se plaindre de ce message d'erreur.
Espérons que cette aide.
pour Chrome sur MacOS, si vous avez préparé un certificat:
- Quit Chrome ( cmd + Q ).
- Lancez l'application D'accès au porte-clés et ouvrez la catégorie" certificats".
- faites glisser votre fichier de certificat dans la fenêtre D'accès au porte-clés et tapez le mot de passe pour le fichier de certificat.
- double clic sur votre certificat et déplier la " confiance" liste.
- in row "en utilisant ce certificat, "choose" Always Trust."
- fermez ce truc et tapez votre mot de passe.
- démarrez Chrome et nettoyez toutes les caches.
- vérifiez que tout va bien.