Obtenir que Chrome accepte le certificat localhost auto-signé

1213

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

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

pjohansson
la source
14
Lorsque vous dites que Firefox s'en plaint initialement, voulez-vous dire qu'il vous demande d'ajouter une exception de certificat? Cela ne devrait pas se produire si le certificat est correctement installé. Il me semble que les trois navigateurs se plaignent, mais Firefox vous permet d'annuler sa plainte. Je poste ceci en tant que commentaire car je n'ai pas de réponse spécifique, mais j'ai fait exactement cela et cela fonctionne bien dans les trois navigateurs. Je suggérerais que vous essayiez de le faire fonctionner sur IE d'abord, puis une fois que cela vous plait, vous inquiétez pour les deux autres. Désolé, je n'ai pas pu vous aider davantage!
starskythehutch
1
Vous devez créer un certificat bien formé, y compris la façon dont les noms DNS sont présentés. OpenSSL ne les présente pas d'une manière qui satisfait les navigateurs prêts à l'emploi. Voir Comment créer un certificat auto-signé avec openssl? .
2015
4
Firefox n'utilise pas le magasin de certificats système.
curiousguy
4
Si la signature de votre certificat utilise SHA-1, les versions récentes de Chrome (vers 57) afficheront des avertissements même si vous avez réussi à ajouter votre certificat personnalisé avec succès . Peu importe, le panneau « Sécurité » des outils de développement va dire plus précisément ce que le problème est par exemple: net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM.
SeldomNeedy
2
Je viens de cesser d'utiliser Chrome à des fins de développement, car il n'est pas convivial pour les développeurs. Habituellement, une personne qui se retrouve dans cette situation sait de toute façon ce qu'elle fait. Merci, mais pas merci. J'ai eu assez de frustration avec Chrome!
GTodorov

Réponses:

66

2020-05-22 : Avec seulement 6 commandes shell , vous pouvez accomplir cela.

Veuillez ne pas modifier les paramètres de sécurité de votre navigateur.

Avec le code suivant, vous pouvez (1) devenir votre propre autorité de certification, (2) puis signer votre certificat SSL en tant qu'autorité de certification. (3) Importez ensuite le certificat CA (pas le certificat SSL, qui va sur votre serveur) dans Chrome / Chromium. (Oui, cela fonctionne même sous Linux.)

######################
# Become a Certificate Authority
######################

# Generate private key
openssl genrsa -des3 -out myCA.key 2048
# Generate root certificate
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem

######################
# Create CA-signed certs
######################

NAME=mydomain.com # Use your own domain name
# Generate a private key
openssl genrsa -out $NAME.key 2048
# Create a certificate-signing request
openssl req -new -key $NAME.key -out $NAME.csr
# Create a config file for the extensions
>$NAME.ext cat <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $NAME # Be sure to include the domain name here because Common Name is not so commonly honoured by itself
DNS.2 = bar.$NAME # Optionally, add additional domains (I've added a subdomain here)
IP.1 = 192.168.0.13 # Optionally, add an IP address (if the connection which you have planned requires it)
EOF
# Create the signed certificate
openssl x509 -req -in $NAME.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial \
-out $NAME.crt -days 825 -sha256 -extfile $NAME.ext

Récapituler:

  1. Devenez CA
  2. Signez votre certificat à l'aide de votre clé CA
  3. Importer myCA.pemen tant qu'autorité dans vos paramètres Chrome (Paramètres> Gérer les certificats> Autorités> Importer)
  4. Utilisez le .crtfichier sur votre serveur

Étapes supplémentaires (pour Mac, au moins):

  1. Importez le certificat CA dans "Fichier> Importer un fichier", puis trouvez-le également dans la liste, faites un clic droit dessus, développez "> Confiance" et sélectionnez "Toujours".
  2. Ajoutez extendedKeyUsage=serverAuth,clientAuthci basicConstraints=CA:FALSE- dessous et assurez-vous de définir le "CommonName" sur le même que $NAMElors de la demande de configuration

Vous pouvez vérifier votre travail

openssl verify -CAfile myCA.pem -verify_hostname bar.mydomain.com mydomain.com.crt
JellicleCat
la source
2
Les navigateurs et les systèmes d'exploitation @maverick sont livrés avec un nombre limité d'autorités de certification auxquelles ils font confiance. Bien que n'importe qui puisse devenir une autorité de certification, pour que quelqu'un puisse faire confiance à ses certificats, il faudrait que des personnes les ajoutent manuellement en tant qu'autorité de certification approuvée (comme nous le disons à Chrome de le faire lorsque nous importons manuellement un certificat).
JellicleCat
2
Génial! Deux remarques pour les utilisateurs Mac comme moi: sur la dernière ligne, utilisez -days 825plutôt qu'en -days 1825raison de superuser.com/questions/1492643/… , et il convient de noter que pour importer le certificat racine dans Key Chain Access, vous devez non seulement "Fichier" > Importer un fichier ", mais aussi pour le trouver dans la liste, faites un clic droit dessus, développez"> Confiance "et sélectionnez" Toujours ".
michielbdejong
2
Si vous avez besoin d'un fichier PEM au lieu d'un fichier CRT pour votre serveur de développement local, ne vous inquiétez pas, combinez simplement les fichiers .crt et .csr et enregistrez-les en tant que fichier .pem , et vous êtes prêt à partir.
Kerem Baydoğan
1
ENFIN, ÇA MARCHE! BRAVO pour cette réponse. N'oubliez pas de charger myCA.pem sur votre Chrome ou Firefox (Paramètres> Gérer les certificats> Autorités> Importer)
Fryser wow
3
J'ai changé DNS.1 en IP.1 pour mon serveur LAN basé sur IP. Ça marche. Merci.
dw1
767

Pour localhostseulement:

Collez-le simplement dans votre chrome:

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

Vous devriez voir le texte en surbrillance dire: Autoriser les certificats non valides pour les ressources chargées à partir de l'hôte local

Cliquez Enable.

Chris
la source
3
Désactive l'avertissement ... mais aussi le cache! bugs.chromium.org/p/chromium/issues/detail?id=103875
Hugo Wood
4
cela ne fonctionnera pas si vous utilisez le chrome en mode
navigation privée
5
Cela - si vous pouvez supporter le message rouge non sécurisé ennuyeux. Sinon, ce sont des heures d'incantations mystérieuses d'OpenSL, puis d'essayer de gérer le gestionnaire de certificats interne dans Chrome.
timbo
10
Je ne sais pas pourquoi cette réponse a été votée mais il y a une différence entre un certificat non valide et un certificat auto-signé. La question concerne le certificat auto-signé.
Mehdi
2
Ça ne marchait pas du tout pour moi. Ce qui a fonctionné pour moi a été de générer un certificat auto-signé comprenant subjectAltName, comme expliqué par cette réponse: stackoverflow.com/a/42917227/2873507
Vic Seedoubleyew
507

Cela a fonctionné pour moi:

  1. À l'aide de Chrome, accédez à une page de votre serveur via HTTPS et continuez après la page d'avertissement rouge (en supposant que vous ne l'ayez pas déjà fait).
  2. Ouvrez Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates.
  3. Cliquez sur l' Authoritiesonglet et faites défiler vers le bas pour trouver votre certificat sous le nom de l'organisation que vous avez donné au certificat.
  4. Sélectionnez-le, cliquez sur Modifier ( REMARQUE : dans les versions récentes de Chrome, le bouton est désormais "Avancé" au lieu de "Modifier"), cochez toutes les cases et cliquez sur OK. Vous devrez peut-être redémarrer Chrome.

Vous devriez maintenant avoir le joli cadenas vert sur vos pages.

EDIT: J'ai essayé à nouveau sur une nouvelle machine et le certificat n'apparaissait pas dans la fenêtre Gérer les certificats simplement en continuant à partir de la page rouge des certificats non approuvés. Je devais faire ce qui suit:

  1. Sur la page contenant le certificat non approuvé ( https://barré en rouge), cliquez sur le verrou> Informations sur le certificat. REMARQUE: sur les versions plus récentes de Chrome, vous devez ouvrir Developer Tools > Securityet sélectionner View certificate.
  2. Cliquez sur Details tab > Export. Choisissez PKCS #7, single certificatecomme format de fichier.
  3. Suivez ensuite mes instructions d'origine pour accéder à la page Gérer les certificats. Cliquez sur Authorities tab > Importet choisissez le fichier dans lequel vous avez exporté le certificat, et assurez-vous de choisir PKCS #7, single certificate comme type de fichier .
  4. Si un magasin de certification vous y invite, choisissez Autorités de certification racines de confiance
  5. Cochez toutes les cases et cliquez sur OK. Redémarrez Chrome.
kellen
la source
143
J'ai essayé cela sur une machine Linux, mais il a dit que l'importation a échoué car xxx.xxx.com: Pas une autorité de certification.
mat
15
Merci @kellen .. cependant, en utilisant la version bêta de Chrome 29.0.1547.57, il ne semble pas y avoir d'option "Exporter" nulle part dans les informations du certificat. Cela dit, il existe une section "Détails" mais elle n'est pas sous la forme d'un onglet. Il apparaît comme un bloc pliable / extensible. i.imgur.com/dDmNEIh.png
cavalcade
20
Dans Chrome 37, il n'y a Exportplus de bouton descriptif utile, il semble avoir été remplacé par le merveilleux Copy to filebouton. Pourquoi `` exporter '' n'a pas été conservé, l'esprit n'a que des
boggles
13
@Jakobud, faites simplement glisser le symbole du certificat sur le bureau ou quelque chose et il est exporté. Cependant, le reste de la réponse ne fonctionne pas sur OS X (Yosemite) pour autant que je sache (Chrome 39).
db
33
Depuis Chrome 56, pour accéder aux paramètres du certificat SSL dans Windows, vous devez utiliser les outils de développement (CTRL + MAJ + i), allez dans l'onglet "Sécurité" et cliquez sur le bouton "Afficher le certificat".
void.pointer
167

MISE À JOUR POUR CHROME 58+ (SORTIE 2017-04-19)

Depuis Chrome 58, la possibilité d'identifier l'hôte en utilisant uniquement a commonName été supprimée . Les certificats doivent désormais être utilisés subjectAltNamepour identifier leurs hôtes. Voir plus de discussion ici et tracker de bogues ici . Auparavant, subjectAltNameétait utilisé uniquement pour les certificats multi-hôtes, de sorte que certains outils CA internes ne les incluent pas.

Si vos certificats auto-signés ont bien fonctionné 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 certificat signé par une autorité de certification auto-signée), assurez-vous que le certificat du serveur contient un subjectAltNameavec la bonne DNSet / ou IPentrée / entrées, même si c'est juste pour un seul hôte .

Pour openssl, cela signifie que votre configuration OpenSSL ( /etc/ssl/openssl.cnfsur 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 plusieurs hôtes:

[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 la visionneuse de cert de Chrome (qui a déplacé à l' onglet « Sécurité » sous F12) vous devriez le voir répertorié sous Extensionscomme Certificate Subject Alternative Name:

Visionneuse de certificats Chrome

Tobias J
la source
12
Merci d'avoir publié un article sur la mise à jour Chrome 58+! Pour les personnes qui cherchent à créer un certificat auto-signé qui inclut un SAN dans Windows, un moyen simple consiste à utiliser le commandlet New-SelfSignedCertificate PowerShell. New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
DanO
3
@DANO MERCI! Aucune des autres solutions de contournement ne fonctionnait pour moi sur Win10. Bon à savoir au moins Powershell génère des certificats valides!
Brian Donahue
1
J'ai trouvé une solution sur Reddit pour Chrome 58+ et ça marche! Dans l'invite de commande Admin: reg add HKLM \ Software \ Policies \ Google \ Chrome / v EnableCommonNameFallbackForLocalAnchors / t REG_DWORD / d 1
IrfanClemson
3
Pour créer la politique sur Linux, vous devez créer un fichier de politique, disons /etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.jsonavec ces contenus: { "EnableCommonNameFallbackForLocalAnchors": true }
seanf
5
« Visionneuse de cert Dans Chrome (qui a déménagé à onglet « Sécurité » sous F12) , vous devriez le voir répertorié sous Extensionscomme Certificate Subject Alternative Name». Je ne vois aucune section "Extensions" lorsque j'affiche l'onglet Sécurité dans les outils de développement F12 (Chrome 62). A-t-il été déplacé ailleurs?
Thunderforge
143

Sur le Mac, vous pouvez utiliser l'utilitaire d'accès au trousseau pour ajouter le certificat auto-signé au trousseau système, et Chrome l'acceptera ensuite. J'ai trouvé les instructions étape par étape ici:

Google Chrome, Mac OS X et certificats SSL auto-signés

Fondamentalement:

  1. double-cliquez sur l'icône de verrouillage avec un X et glissez-déposez l'icône de certificat sur le bureau,
  2. ouvrez ce fichier (se terminant par une extension .cer); cela ouvre l'application trousseau qui vous permet d'approuver le certificat.
bjnord
la source
12
Surtout, vous devrez peut-être redémarrer Chrome pour que cela prenne effet.
Xiong Chiamiov
10
J'ai dû modifier les préférences de certificat et activer la confiance sur SSL manuellement
NeDark
1
Cela a fonctionné pour moi sur Yosemite, 10.10.5, Chrome Version 46.0.2490.80 (64 bits). Merci!
romellem
2
A travaillé sur El Capitan, aucun redémarrage requis. J'ai ajouté le certificat, cliqué dessus, développé la liste déroulante Trust et défini la Always Trustpour la section SSL. Fondamentalement, ce que @NeDark a dit.
Tom
1
J'avais besoin de glisser-déposer le certificat du bureau dans le trousseau, puis de faire l'approbation.
jmq
130

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

" thisisunsafe" est un BYPASS_SEQUENCE pour Chrome version 65

" badidea" Chrome version 62 - 64.

" danger" fonctionnait dans les versions antérieures de Chrome

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

Je l'ai essayé sur Mac High Sierra.

Pour vérifier s'ils l'ont changé à nouveau, accédez au dernier code source de chrome

Pour rechercher BYPASS_SEQUENCE, pour le moment cela ressemble à ça:

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

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

console.log(window.atob('dGhpc2lzdW5zYWZl'));
Yevgeniy Afanasyev
la source
6
wtf, merci cela a fonctionné pour moi ubuntu 16.04 63.0.3239.84
gries
8
Ce code a été modifié depuis la nouvelle version. La nouvelle phrase estthisisunsafe
The Java Guy
6
Dans Chrome 65 sur Windows 10, la saisie thisisunsafesemble avoir uniquement pour effet d'ajouter ce site aux exceptions. (La barre d'adresse indique toujours "Pas sécurisé" en rouge.)
Ryan
2
cela fonctionne mais juste pour le premier chargement, si vous naviguez sur la page, vous devez taper à nouveau le bupass_squence
talsibony
"thisisunsafe" BYPASS_SEQUENCE était la seule chose de cette page qui a fonctionné pour moi sur Mac Chrome 72. J'ai l'impression que je n'avais pas besoin de prendre la peine de créer mon certificat auto-signé ...!
Jono
95

Linux

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

Fondamentalement:

  • cliquez sur l'icône du cadenas avec un X,
  • choisissez les informations du certificat
  • aller à l'onglet Détails
  • Cliquez sur Exporter ... (enregistrer en tant que fichier)

Maintenant, la commande suivante va ajouter le certificat (où VOTRE_FICHIER 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 pouvez être affecté par ce bogue: Problème 55050: Erreur SSL Ubuntu 8179

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

Si vous n'en avez pas, veuillez l'installer en:

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écuter Chrome avec --auto-ssl-client-authparamètre

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

kenorb
la source
Excellent, j'adore vos scripts. Cependant, vous n'avez pas besoin de QUIT (il n'y a pas de commande HTTP comme QUIT), et vous n'avez pas non plus besoin de sed, les outils nss peuvent filtrer le certificat entre BEGIN et END CERT. Donc ça download_cert.shpeut être simplement ceci:echo | openssl s_client -connect $1:443
Paul Tobias
J'ai essayé les autres options, mais seule celle-ci fonctionne actuellement dans Chrome 4x pour Linux, elle a refusé d'importer dans n'importe quel magasin à l'aide d'outils intégrés.
Kendrick
93

Sur le Mac, vous pouvez créer un certificat entièrement approuvé par Chrome et Safari au niveau du système en procédant comme 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 support v3.extpour éviter les erreurs manquantes du nom alternatif du sujet

Si vous souhaitez créer un nouveau certificat auto-signé entièrement fiable à l'aide de votre propre autorité racine, vous pouvez le faire à l'aide de 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 "$1" ]
    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=$1
    COMMON_NAME=${2:-*.$1}
    SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME"
    NUM_OF_DAYS=825
    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.ext

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

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

Une étape de plus - Comment rendre les certificats auto-signés entièrement fiables dans Chrome / Safari

Pour permettre aux certificats auto-signés d'être entièrement approuvés 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 Web mitmproxy :

Vous pouvez le faire de deux manières, en ligne de commande, en utilisant cette commande qui vous demandera votre mot de passe:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

ou en utilisant l' Keychain Accessapplication:

  1. Accès au trousseau ouvert
  2. Choisissez "Système" dans la liste "Porte-clés"
  3. Choisissez "Certificats" dans la liste "Catégorie"
  4. Choisissez "Fichier | Importer des éléments ..."
  5. Naviguez jusqu'au fichier créé ci-dessus, "rootCA.pem", sélectionnez-le et cliquez sur "Ouvrir"
  6. Sélectionnez votre certificat nouvellement importé dans la liste "Certificats".
  7. Cliquez sur le bouton "i", ou faites un clic droit sur votre certificat et choisissez "Obtenir des informations"
  8. Développez l'option "Trust"
  9. Remplacez «Lors de l'utilisation de ce certificat» par «Toujours faire confiance»
  10. Fermez la boîte de dialogue et vous serez invité à entrer votre mot de passe.
  11. Fermez et rouvrez 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 certificats dans le magasin de clés java. Notez que cela supprimera le certificat du magasin de clés s'il existe déjà, car il doit le mettre à jour au cas où les choses changeraient. Bien sûr, cela ne s'applique qu'aux 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
Brad Parks
la source
Vous avez "Erreur lors de l'ouverture de la clé privée rootCA.key" lors de l'exécution $ ./create_root_cert_and_key.sh. macOS 10.12.4 et OpenSSL 0.9.8zh 14 janvier 2016.
donut
1
L'exécution $ openssl genrsa -out rootCA.key 2048avant $ ./create_root_cert_and_key.shcorrige l'erreur «Erreur d'ouverture de la clé privée rootCA.key» que j'ai rencontrée.
donut
@donut - merci de l'avoir signalé - j'ai dupliqué cette ligne, donc je suis sûr que cela a causé le problème que vous avez vu ...
Brad Parks
openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csrme donne l'erreur "Erreur d'ouverture de PRivate Key device.key" Je pensais que cette commande était censée créer device.key, mais elle semble essayer de la lire pour une raison quelconque
Lenny
2
J'ai compris que la solution (au cas où quelqu'un d'autre toucherait cela) était de changer -keypour -keyout...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
Lenny
90

MISE À JOUR 11/2017: Cette réponse ne fonctionnera probablement pas pour la plupart des versions plus récentes de Chrome.

MISE À JOUR 02/2016: De meilleures instructions pour les utilisateurs de Mac peuvent être trouvées ici .

  1. Sur le site que vous souhaitez ajouter, cliquez avec le bouton droit sur l'icône de verrouillage rouge dans la barre d'adresse:entrez la description de l'image ici

    1. Cliquez sur l'onglet intitulé Connexion , puis sur Informations sur le certificat

    2. Cliquez sur le Détails onglet, le cliquez sur le bouton Copier dans un fichier ... . Cela ouvrira l'Assistant Exportation de certificat, cliquez sur Suivant pour accéder à l' écran Exporter le format de fichier .

    3. Choisissez le binaire codé DER X.509 (.CER) , cliquez sur Suivant

    4. Cliquez sur Parcourir ... et enregistrez le fichier sur votre ordinateur. Nommez-le quelque chose de descriptif. Cliquez sur Suivant , puis sur Terminer .

    5. Ouvrez les paramètres de Chrome, faites défiler vers le bas et cliquez sur Afficher les paramètres avancés ...

    6. Sous HTTPS / SSL , cliquez sur Gérer les certificats ...

    7. Cliquez sur la racine de confiance Autorités de certification onglet, puis cliquez sur l' importation ... bouton. Cela ouvre l'Assistant Importation de certificat. Cliquez sur Suivant pour accéder à l' écran Fichier à importer .

    8. Cliquez sur Parcourir ... et sélectionnez le fichier de certificat que vous avez enregistré précédemment, puis cliquez sur Suivant .

    9. Sélectionnez Placer tous les certificats dans le magasin suivant . Le magasin sélectionné doit être des autorités de certification racines de confiance . Si ce n'est pas le cas, cliquez sur Parcourir ... et sélectionnez-le. Cliquez sur Suivant et Terminer

    10. Cliquez sur Oui dans l'avertissement de sécurité.

    11. Redémarrez Chrome.

kmgdev
la source
2
@AJeneral Ouais, Chrome a encore changé. Les instructions de cet article ont fonctionné pour moi récemment.
kmgdev
2
Cette option n'existe pas sur Mac Chrome au plus tard à la date de ce commentaire.
y3sh
1
@kgrote, Chrome n'a pas son propre magasin de certificats. Tout ce qu'il fait, c'est ajouter et supprimer celui de Windows. En tant que tel, une meilleure façon consiste à simplement utiliser certmgr.mscpour ajouter et supprimer des certificats.
Pacerier
1
A fonctionné pour moi, merci. J'ai dû redémarrer Chrome et, surtout, mon certificat devait expirer avant 2017. Des trucs SHA-1.
ioanb7
1
CHROME A ENCORE CHANGÉ! Maintenant, l'étape "Dans la barre d'adresse, cliquez sur le petit cadenas avec le X. Cela fera apparaître un petit écran d'informations." ne fonctionne pas.
Bruno Bronosky
59

Si vous êtes sur un Mac et que vous ne voyez pas l'onglet d'exportation ou comment obtenir le certificat, cela a fonctionné pour moi:

  1. Cliquez sur le verrou avant https: //
  2. Allez dans l'onglet "Connexion"
  3. Cliquez sur "Informations sur le certificat"

    Vous devriez maintenant voir ceci: Différentes informations bien sûr et les vôtres doivent encore être marquées comme fiables (sinon vous ne seriez probablement pas ici)

  4. Faites glisser cette petite icône de certificat sur votre bureau (ou n'importe où).

  5. Double-cliquez sur le fichier .cer qui a été téléchargé, cela devrait l'importer dans votre trousseau et ouvrir l'accès au trousseau à votre liste de certificats.

    Dans certains cas, cela suffit et vous pouvez maintenant actualiser la page.

    Autrement:

  6. Double-cliquez sur le certificat nouvellement ajouté.
  7. Sous la liste déroulante de confiance, changez l'option "Lors de l'utilisation de ce certificat" en "Toujours faire confiance"

Rechargez maintenant la page en question et le problème devrait être résolu! J'espère que cela t'aides.


Modifier à partir de Wolph

Pour rendre cela un peu plus facile, vous pouvez utiliser le script suivant ( source ):

  1. Enregistrez le script suivant sous whitelist_ssl_certificate.ssh:

    #!/usr/bin/env bash -e
    
    SERVERNAME=$(echo "$1" | 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: $0 www.site.name"
        echo "http:// and such will be stripped automatically"
    fi
  2. Rendez le script exécutable (à partir du shell):

    chmod +x whitelist_ssl_certificate.ssh
  3. Exécutez le script pour le domaine que vous souhaitez (copiez / collez simplement les URL complètes):

    ./whitelist_ssl_certificate.ssh https://your_website/whatever
LunaCodeGirl
la source
1
Cette approche a fonctionné pour moi sur OS X Mavericks, il n'y avait aucune option d' exportation disponible comme décrit dans la réponse ci-dessus.
Kevin Leary
Fonctionne très bien. Le verrou avant https est toujours barré, mais ça va parce qu'il n'y a plus de popup ennuyeux.
nalply
Cela a fonctionné pour moi sur le Mac Catalina. Merci! :)
Saurabh
58

MISE À JOUR 23 avril 2020

Recommandé par l'équipe Chromium

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Solution rapide et super facile

Il existe une phrase de contournement secrète qui peut être tapée dans la page d'erreur pour que Chrome continue malgré l'erreur de sécurité: thisisunsafe (dans les versions antérieures de Chrome, tapez badidea , et même plus tôt, danger ). N'UTILISEZ PAS CELA À MOINS QUE VOUS COMPRENIEZ EXACTEMENT POURQUOI VOUS EN AVEZ BESOIN!

La source:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

(REMARQUE qui window.atob('dGhpc2lzdW5zYWZl')résoutthisisunsafe )

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 window.atobfonction peut être exécutée dans une console JS.

Pour savoir pourquoi l'équipe Chrome a modifié la phrase de contournement (la première fois):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

Si tout le reste échoue (Solution # 1)

Pour des one-offs rapides si l'option "Continue Anyway" n'est pas disponible, ou si la phrase de contournement fonctionne, ce hack fonctionne bien:

  1. Autoriser les erreurs de certificat localhosten activant cet indicateur (notez que Chrome a besoin d'un redémarrage après avoir modifié la valeur de l'indicateur):

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

    (et réponse au vote https://stackoverflow.com/a/31900210/430128 par @Chris)

  2. Si le site auquel vous souhaitez vous connecter est localhost, vous avez terminé. Sinon, configurez un tunnel TCP pour écouter localement sur le port 8090 et connectez-vous broken-remote-site.comsur le port 443, assurez-vous d'avoir socatinstallé et exécuté quelque chose comme ceci dans une fenêtre de terminal:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. Accédez à https: // localhost: 8090 dans votre navigateur.

Si tout le reste échoue (Solution # 2)

Similaire à "Si tout le reste échoue (Solution # 1)", nous configurons ici un proxy pour notre service local en utilisant ngrok . Étant donné que vous pouvez accéder aux tunnels http ngrok via TLS (auquel cas il est terminé par ngrok avec un certificat valide) ou via un point de terminaison non TLS, le navigateur ne se plaindra pas des certificats non valides.

Téléchargez et installez ngrok, puis exposez-le via ngrok.io:

ngrok http https://localhost

ngrok démarrera et vous fournira un nom d'hôte auquel vous pourrez vous connecter, et toutes les demandes seront retransmises en tunnel vers votre machine locale.

Raman
la source
10
Comme indiqué sur quora.com/… , une autre option est de cliquer n'importe où sur la page et d'écrire "badidea"
smihael
Quiconque essaie d'utiliser localhost avec https pour les travailleurs de service, le premier point de If-all-fail a fonctionné pour moi sur Chrome 60 Ubuntu 14.04
Formatkaka
cela traitera toujours le certificat comme invalide et rendra le mot de passe gérer le refus de travailler
Ray Foss
34

Pour un environnement de test

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

Cela lui fera 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 la ligne de commande ou cela ouvrira une nouvelle fenêtre mais ignorera les paramètres.

Je configure 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 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.

Kieran Moore
la source
5
Cela a fonctionné pour moi dans Windows 8! Je viens de cliquer avec le bouton droit de la souris sur le raccourci Chrome> Propriétés> Le champ 'Cible' modifié comme celui-ci (notez que '--ignore-certificate-errors' devrait être ajouté après le devis et avec de l'espace): "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe "--ignore-certificate-errors
mikhail-t
1
Cela ne répond pas à la question, et c'est dangereux. La question était de savoir comment amener Chrome à faire confiance à un certificat de serveur auto-signé; pas comment ignorer les avertissements et les erreurs.
2015
1
C'est la seule solution qui a fonctionné pour moi sur Chrome (63.0.3239.108) avec Windows 7 (64 bits). En ce qui concerne la sécurité, j'ai créé une icône spéciale sur le bureau que je ne lance que lors du développement sur une machine virtuelle locale. L'importation de certificats locaux auto-signés, le réglage de chrome: // flags & HSTS domain n'a pas aidé. Chrome devrait définitivement conserver ce bon bouton "Ajouter une exception de sécurité" - cela me ferait économiser 2 heures de lutte avec des paramètres inutiles.
lubosdz
Ce tutoriel a fonctionné comme un charme! youtube.com/watch?v=qoS4bLmstlk
Jonathan Martins
20

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

chrome://restart

DejerNet
la source
Hey! Je voulais juste faire remarquer que c'est ce qui l'a corrigé pour moi. J'ajoutais une autorité de certification personnalisée au magasin de confiance, cela avait toujours fonctionné pour moi de cette façon. J'ai essayé Firefox et j'ai parfaitement fonctionné, mais pas Chrome. À la fin, c'était parce qu'il semblait que vous deviez redémarrer complètement Chrome comme vous le mentionnez. Il se peut que Chrome continue d'utiliser le même magasin de clés de confiance tant que ces processus d'arrière-plan sont toujours en cours d'exécution.
Jose Cifuentes
20

WINDOWS JUN / 2017 Windows Server 2012

J'ai suivi la réponse de @Brad Parks. Sous Windows, vous devez importer rootCA.pem dans le magasin Trusted Root Certificates Authorities.

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, j'ai donc besoin de lier le certificat avec l'adresse IP et le port, le certificat doit être sur MON magasin avec des informations de clé privée, j'ai donc 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 d'ordinateur / Ordinateur local / OK), j'ai importé un 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 certification racines de confiance de différentes manières, mais j'obtiens toujours la même erreur:

entrez la description de l'image ici

Mais j'ai réalisé que je devais importer un certificat d'autorité racine et non un certificat pour le domaine. J'ai donc utilisé la console mmc (Fichier / Ajouter ou supprimer des composants logiciels enfichables / Certificats / Ajouter / Compte d'ordinateur / LocalComputer / OK) J'ai importé rootCA.pem dans le magasin Trusted Root Certificates Authorities.

entrez la description de l'image ici

Redémarrez Chrome et voilà, cela fonctionne.

Avec localhost:

entrez la description de l'image ici

Ou avec adresse IP:

entrez la description de l'image ici

La seule chose que je n'ai pas pu réaliser, c'est qu'il a un chiffrement obsolète (carré rouge sur la photo). Une 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.

UUHHIVS
la source
2
Important: exécutez OpenSSL en tant qu'administrateur.
Jose A
C'est la meilleure réponse et fonctionne toujours pour Chrome [71.0.3578.98] en janvier 2019
ShadeBlack
Wow cela a fonctionné, merci beaucoup (sur Chrome 75 - juillet 2019). Vous n'avez pas besoin de l' netsh httpétape sauf si vous utilisez un serveur Windows. Je ne pense pas non plus qu'il soit nécessaire d'exporter le fichier cert vers pfx.
fonctionnement confirmé: Chrome 81 - mai 2020 - Windows 7
petrosmm
15
  1. Ajoutez le certificat de l'autorité de certification dans le magasin racine racine approuvé.

  2. Allez dans Chrome et activez ce drapeau!

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

Enfin, utilisez simplement le domaine * .me ou tout domaine valide comme * .com et * .net et conservez-les dans le fichier hôte. Pour mes développeurs locaux, j'utilise * .me ou * .com avec un fichier hôte maintenu comme suit:

  1. Ajouter à l'hôte. C: / windows / system32 / drivers / etc / hosts

    127.0.0.1 nextwebapp.me

Remarque: Si le navigateur est déjà ouvert lors de cette opération, l'erreur continuera de s'afficher. Veuillez donc fermer le navigateur et recommencer. Mieux encore, passez incognito ou démarrez une nouvelle session pour un effet immédiat.

Ariel
la source
Cela semble être le même que la réponse la plus votée .
Michael - Où est Clay Shirky
J'ai seulement ajouté les noms de domaine autorisés dans le développement local, c'est-à-dire les sites * .me, au fichier hôte sous Windows. Les gens ajoutent le certificat, mais parfois l'hôte ne parvient tout simplement pas à vérifier la vérification SSL même si le certificat est installé correctement. Dans ce cas, nous créons une nouvelle session. J'ai seulement ajouté ces conseils. J'ai traversé ce trou de lapin trop profondément alors je voulais m'assurer que quelqu'un savait quoi faire si c'était nécessaire.
Ariel
14

Êtes-vous sûr que l'adresse sur laquelle le site est servi est la même que le certificat? J'ai eu les mêmes problèmes avec Chrome et un certificat auto-signé, mais à la fin j'ai trouvé que c'était juste incroyablement pointilleux sur la validation du nom de domaine sur le certificat (comme il se doit).

Chrome n'a pas son propre magasin de certificats et utilise celui de Windows. Cependant, Chrome ne fournit aucun moyen d'importer des certificats dans la boutique, vous devez donc les ajouter via IE à la place.

Installation de certificats dans Google Chrome

Installation de certificats dans Internet Explorer

Jetez également un œil à ceci pour quelques approches différentes pour créer des certificats auto-signés (je suppose que vous utilisez IIS comme vous ne l'avez pas mentionné).

Comment créer un certificat auto-signé dans IIS 7

Ira Rainey
la source
Le site en question est localhost et le CN du certificat est "localhost". Oui, j'ai installé le certificat dans le magasin de certificats de Windows. IE et Chrome se plaignent du certificat.
pjohansson
Je ne sais pas si vous utilisez IIS ou Apache, mais vérifiez le lien supplémentaire que je viens d'ajouter sur la création de certificats auto-signés pour IIS.
Ira Rainey
En raison de l' incroyablement pointilleux sur la validation du nom de domaine sur la partie cert : quelqu'un en sait-il plus à ce sujet? J'ai un problème (c'est 2019) sur Android 9 avec un certificat racine, qui est blâmé comme non sécurisé par Google Chrome. C'est OK pour FF et sur le bureau.
BairDev
7

J'ai suivi le processus d'utilisation de ce que bjnord a suggéré, à savoir: Google Chrome, Mac OS X et les certificats SSL auto-signés

Ce qui est montré dans le blog n'a pas fonctionné.

Cependant, l'un des commentaires du blog était d'or:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

Vous devrez suivre le blog sur la façon d'obtenir le fichier cert, après quoi vous pouvez utiliser la commande ci-dessus et devrait être bon pour aller.

James Oravec
la source
7

L'interface graphique de gestion des certificats SSL sur Chromium sous Linux ne fonctionnait PAS correctement pour moi. Cependant, leurs documents ont donné la bonne réponse. L'astuce consistait à exécuter la commande ci-dessous qui importe le certificat SSL auto-signé. Mettez simplement à jour le nom du <certificate-nickname>et certificate-filename.cer, puis redémarrez chrome / chrome.

Depuis les documents:

Sous Linux, Chromium utilise la base de données partagée NSS. Si le gestionnaire intégré ne fonctionne pas pour vous, vous pouvez configurer des certificats avec les outils de ligne de commande NSS.

Obtenez les outils

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Feutre: su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss"(Vous devez lancer toutes les commandes ci-dessous avec le nsspréfixe, par exemple nsscertutil.) Opensuse:sudo zypper install mozilla-nss-tools

Pour faire confiance à un certificat de serveur auto-signé, nous devons utiliser

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

Lister tous les certificats

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

Les TRUSTARGS sont trois chaînes de zéro ou plusieurs caractères alphabétiques, séparées par des virgules. Ils définissent la manière dont le certificat doit être approuvé pour SSL, la messagerie électronique et la signature d'objet, et sont expliqués dans les documents certutil ou le blog de Meena sur les indicateurs de confiance.

Ajouter un certificat personnel et une clé privée pour l'authentification client SSL Utilisez la commande:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

pour importer un certificat personnel et une clé privée stockés dans un fichier PKCS # 12. Les TRUSTARGS du certificat personnel seront définis sur «u, u, u».

Supprimer un certificat certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Extrait de: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

TetraDev
la source
7

Filippo Valsorda a écrit un outil multiplateforme mkcert, pour le faire par lots magasins de confiance. Je suppose qu'il l'a écrit pour la même raison qu'il y a tant de réponses à cette question: c'est une peine de faire la "bonne" chose pour les certificats SubjectAltName signés par une autorité de certification racine de confiance.

mkcert est inclus dans les principaux systèmes de gestion de packages pour Windows, macOS et plusieurs versions de Linux.

mkcert

mkcertest un outil simple pour créer des certificats de développement approuvés localement. Il ne nécessite aucune configuration.

$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

$ mkcert example.com "*.example.com" example.test localhost 127.0.0.1 ::1
Using the local CA at "/Users/filippo/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "example.com"
 - "*.example.com"
 - "example.test"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./example.com+5.pem" and the key at "./example.com+5-key.pem" ✅
Michael - Où est Clay Shirky
la source
6

Lorsque vous cliquez sur la petite icône de verrouillage barrée à côté de l'URL, vous obtenez une boîte ressemblant à ceci:

entrez la description de l'image ici

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

entrez la description de l'image ici

Il vous indique quel magasin de certificats est le bon, ce sont les autorités de certification racines de confiance magasin des .

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é.
Der Hochstapler
la source
1
certutil -addstore -user "ROOT" cert.pemest Windows?
Pacerier
1
@Pacerier: Correct, c'est pour Windows.
Der Hochstapler
Vous devez l'avoir Trusted Root Certification Authoritiesmais le problème persiste: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, chrome 78
TryHard
6

Cela a fonctionné 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 le petit cadenas avec le X. Cela fera apparaître un petit écran d'informations. Cliquez sur le bouton qui dit "Informations sur le certificat".

Cliquez et faites glisser l'image sur votre bureau. Cela ressemble à un petit certificat.

Double-cliquez dessus. Cela fera apparaître l'utilitaire d'accès au trousseau. Entrez votre mot de passe pour le déverrouiller.

Assurez-vous d'ajouter le certificat au trousseau système, pas au trousseau de connexion. Cliquez sur "Toujours faire confiance", même si cela ne semble rien faire.

Une fois qu'il a été ajouté, double-cliquez dessus. Vous devrez peut-être vous authentifier à nouveau.

Développez la section "Trust".

"Lors de l'utilisation de ce certificat", défini sur "Toujours faire confiance"

Vincil Bishop
la source
6

J'ai tout essayé et ce qui l'a fait fonctionner: lors de l'importation, sélectionnez la bonne catégorie, à savoir les autorités de certification racine de confiance :

(désolé c'est l'allemand, mais suivez simplement l'image)

entrez la description de l'image ici

Hannes Schneidermayer
la source
6
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
Alex Ivasyuv
la source
1
C'est le seul qui a fonctionné pour moi avec le chrome 77. Merci d'avoir sauvé ma journée.
Romain
Comment utilise-t-on les fichiers générés? Je comprends comment utiliser les fichiers de domaine .crt et .key mais à quoi sert le fichier .csr? Et comment utiliser les fichiers rootCA. *? Veuillez développer votre réponse ...
Chiwda
Merci beaucoup, vous venez de sauver ma journée!
dodancs
6

Ce message est déjà inondé de réponses, mais j'ai créé un script bash basé sur certaines des autres réponses pour 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)


Un autre outil à découvrir est la cfsslboîte à outils de CloudFlare :

cfssl

Logan
la source
6

Pour créer un certificat auto-signé dans Windows auquel Chrome v58 et versions ultérieures feront confiance, lancez Powershell avec des privilèges élevés et tapez:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

Une fois que vous faites cela, le certificat sera enregistré dans les certificats de l'ordinateur local sous Personal \ Certificates magasin .

Vous souhaitez copier ce certificat dans les autorités de certification racines de confiance \ Certificats magasin .

Une façon de procéder: cliquez sur le bouton Démarrer de Windows et tapez certlm.msc. Ensuite, faites glisser et déposez le certificat nouvellement créé vers le magasin Autorités de certification racine de confiance \ Certificats selon la capture d'écran ci-dessous. entrez la description de l'image ici

mpowrie
la source
comment faire cela sous mac s'il vous plait? merci :)
Artanis Zeratul
@mpowrie. Après avoir généré cela, comment puis-je le lier au serveur Web Apache? Sur le serveur localhost.
Ifedi Okonkwo
Ifedi Okonkwo: Je ne suis pas sûr avec le serveur Web Apache désolé, mais avec IIS vous ajoutez une liaison de site de type https, incluez le nom d'hôte complet et sélectionnez le certificat SSL.
mpowrie
Cela fonctionne comme un charme. Je dirai que vous devrez effectuer une étape supplémentaire si vous souhaitez attribuer ce certificat en tant que liaison ... et que le certificat doit également figurer dans Personal> Certificates. Le glisser-déposer, pour une raison quelconque, l'a effectivement supprimé des certificats personnels et l'a placé dans les certificats approuvés. Assurez-vous donc de le copier et de le coller.
StephenPAdams
5

Correction de l'hôte local SSL / HTTPS sur le mac / osx:

  1. Cliquez sur le cadenas rouge avec la croix dans votre barre d'adresse lorsque vous essayez d'ouvrir votre environnement https localhost. Une fenêtre s'ouvre avec des informations sur le certificat.

  2. Cliquez sur la fenêtre d'information "Détails"

  3. Les outils de développement Chrome s'ouvrent sur l'onglet «Sécurité». Cliquez sur Afficher le certificat . L'image du certificat
  4. Ajoutez-le à votre trousseau «Système» (pas votre trousseau «connexion» qui est sélectionné par défaut).

  5. Ouvrez (à nouveau) votre trousseau et trouvez le certificat. Cliquez dessus et assurez-vous que vous "faites confiance" à tous.

  6. Redémarrez Chrome et cela devrait fonctionner.

cscheltinga
la source
L'interface graphique stupide peut ne pas accepter le certificat dans MacoOS 10.14.5, mais vous pouvez l'importer avec security import filename.pem -k ~/Library/Keychains/login.keychain. Le graphique donne une erreur -25294
boatcoder
5

Je rencontrais le même problème: j'avais installé le certificat dans le magasin des autorités racines de confiance de Windows et Chrome refusait toujours 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 l'indique le nom de l'erreur, ce commentaire et cette question , le problème résidait dans le nom de domaine déclaré dans le certificat. Lorsqu'on m'a demandé le "Nom commun" lors de la génération du certificat, j'ai dû saisir le nom de domaine que j'utilisais pour accéder au site ( localhostdans mon cas). J'ai redémarré Chrome à l'aide chrome://restartet il était enfin satisfait de ce nouveau certificat.

Hugo Wood
la source
J'utilise également localhost mais Chrome n'est pas content de cela imgur.com/a/mjlglVz Windows 10, Chrome 78. J'ai suivi les instructions à partir d'ici: stackoverflow.com/a/44398368/4983983
J'accède à
utiliser le nom commun "localhost" a presque fonctionné, puis finalement cela a fonctionné quand j'ai également lancé Chrome avec option--allow-insecure-localhost
pestophage
5

Depuis Chrome 58+, j'ai commencé à obtenir une erreur de certificat sur macOS en raison d'un SAN manquant. Voici comment récupérer le verrou vert sur la barre d'adresse.

  1. Générez 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
  2. Importez le server.crtdans votre KeyChain, puis double-cliquez dans le certificat, développez le Trust et sélectionnez Always Trust

Actualisez la page https://domain.dev dans Google Chrome, afin que le verrou vert soit de retour.

Adriano Rosa
la source
Cela fonctionne pour les sous-domaines api.domain.devmais j'ai toujours une page d'avertissement sur domain.dev: This server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.Une idée?
François Romain
5

Pour Chrome sur MacOS, si vous avez préparé un certificat:

  • Quittez Chrome ( cmd+ Q).
  • Démarrez l'application Keychain Access et ouvrez la catégorie "Certificats".
  • Faites glisser votre fichier de certificat sur la fenêtre d'accès au trousseau et saisissez le mot de passe du fichier de certificat.
  • Double-cliquez sur votre certificat et dépliez la liste "Trust".
    • Dans la ligne "Lors de l'utilisation de ce certificat", choisissez "Toujours faire confiance".
    • Fermez ce truc et tapez votre mot de passe.
  • Démarrez Chrome et supprimez tous les caches.
  • Vérifiez que tout va bien.
Alykoff Gali
la source
5

Permettre à localhost non sécurisé de fonctionner correctement via cette méthode chrome: // flags / # allow-insecure-localhost

Juste que vous devez créer votre nom d'hôte de développement sur xxx.localhost.

Graine de soja
la source