Comment puis-je créer un certificat auto-signé pour localhost?

134

J'ai suivi les étapes détaillées dans Comment utilisez-vous https / SSL sur localhost? mais cela configure un certificat auto-signé pour le nom de mon ordinateur, et lorsque je le parcours via https: // localhost, je reçois l'avertissement IE.

Existe-t-il un moyen de créer un certificat auto-signé pour "localhost" afin d'éviter cet avertissement?

Chris
la source
Avez-vous installé le certificat en tant qu'autorité de certification?
vcsjones
J'ai suivi le processus pour installer un certificat auto-signé dans IIS sous Win7. Mais cela crée le certificat pour "mymachinename", et j'en ai besoin pour "localhost".
chris
1
Salut! Pensez à définir la réponse d'Auri comme réponse principale car makecert est obsolète. Lien vers la réponse: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Réponses:

81

Bien que cet article soit étiqueté pour Windows, c'est une question pertinente sur OS X pour laquelle je n'ai pas vu de réponses ailleurs. Voici les étapes à suivre pour créer un certificat auto-signé pour localhost sur OS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

Dans Keychain Access, double-cliquez sur ce nouveau cert localhost. Développez la flèche à côté de "Faire confiance" et choisissez "Toujours faire confiance". Chrome et Safari devraient maintenant faire confiance à ce certificat. Par exemple, si vous souhaitez utiliser ce certificat avec node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);
Ben Flynn
la source
2
La première commande, ssh-keygenn'est pas nécessaire car la commande openssl crée également une nouvelle clé (et écrase celle créée par ssh).
Félix Saparelli le
7
Vous pouvez également automatiser complètement le processus en ajoutant -subj '/CN=localhost'aux opensslarguments.
Félix Saparelli le
8
Pour que OS X lui fasse confiance à partir de la ligne de commande au lieu de cliquer, vous pouvez faire:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo
1
Également pertinent pour Linux. Merci beaucoup.
Marcel
1
J'ai suivi toutes ces étapes et j'obtiens un ERR_SSL_VERSION_OR_CIPHER_MISMATCHChrome 60 et Safari 10.1.2 ne l'aime pas non plus.
styfle
61

Puisque cette question est étiquetée IISet que je ne trouve pas de bonne réponse sur la façon d'obtenir un certificat de confiance, je vais donner mes 2 cents à ce sujet:

Utilisez d'abord la commande de @AuriRahimzadeh dans PowerShell en tant qu'administrateur:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

C'est bien, mais le certificat n'est pas approuvé et entraînera l'erreur suivante. C'est parce qu'il n'est pas installé dans Trusted Root Certification Authorities.

entrez la description de l'image ici

Résolvez cela en commençant mmc.exe.

Ensuite aller à:

Fichier -> Ajouter ou supprimer des composants logiciels enfichables -> Certificats -> Ajouter -> Compte d'ordinateur -> Ordinateur local. Cliquez sur Terminer.

Développez le Personaldossier et vous verrez votre localhostcertificat:

entrez la description de l'image ici

Copiez le certificat dans le Trusted Root Certification Authorities - Certificatesdossier.

La dernière étape consiste à ouvrir Internet Information Services (IIS) Managerou simplement inetmgr.exe. De là, allez sur votre site, sélectionnez Bindings...et Add...ou Edit.... Définissez httpset sélectionnez votre certificat dans la liste déroulante.

entrez la description de l'image ici

Votre certificat est maintenant approuvé:

entrez la description de l'image ici

Ogglas
la source
9
Cela devrait être la réponse acceptée! Ça marche! Si vous avez déconné avec l'hôte local et le certificat de confiance. Assurez-vous de supprimer tous les anciens certificats d'hôte local (via la console mmc et IIS (serveur géré par le haut)
Tuan Jinn
Merci! Il y a tellement de réponses SO et d'articles de blog sur ce sujet, mais très peu de discussions sur les problèmes de confiance des certificats. Astuce: Vous devriez peut-être expliquer pourquoi vous n'utilisez pas le port SSL par défaut 443? Je suppose que c'est parce que ce port est souvent pris par un autre processus.
HoffZ le
Réponse vraiment sympa, et fonctionne bien sur IIS comme 2020. Merci beaucoup!
alessandrocb
Fonctionne également pour les alias dans le fichier hosts
Zef
52

Vous pouvez utiliser PowerShell pour générer un certificat auto-signé avec la cmdlet new-selfsignedcertificate:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Remarque: makecert.exe est obsolète.

Référence Cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate

Auri Rahimzadeh
la source
Cela devrait être la réponse à partir de 2017.
Tormod Haugene
1
Pour ceux qui suivent et ne savent pas comment procéder pour installer le certificat résultant, suivez les étapes de cette vidéo, cela a fonctionné pour moi! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal
6
où sont stockés les fichiers clés et crt?
woojoo666
1
@ woojoo666 avec -KeyLocationindicateur, vous pouvez spécifier l'emplacement.
hamid
46

Après avoir passé beaucoup de temps sur ce problème, j'ai constaté que chaque fois que je suivais les suggestions d'utilisation d'IIS pour créer un certificat auto-signé, j'ai trouvé que les éléments Émis à et Émis par n'étaient pas corrects. SelfSSL.exe a été la clé pour résoudre ce problème. Le site Web suivant a non seulement fourni une approche étape par étape pour créer des certificats auto-signés, mais a également résolu le problème Émis et Émis par problème. Voici la meilleure solution que j'ai trouvée pour créer des certificats auto-signés. Si vous préférez voir le même tutoriel sous forme vidéo, cliquez ici .

Un exemple d'utilisation de SelfSSL ressemblerait à ceci:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? fournira une liste de paramètres avec explication.

app.developer.henry
la source
L'article de RobBagby.com a parfaitement fonctionné pour moi. Bonne trouvaille Henry.
cymorg
MEGA! Cette vidéo est de mauvaise qualité mais contient tout le nécessaire.
tonco
2
Le lien vers le site robbagby est mort. Voir ma réponse pour 2 tutoriels youtube de haute qualité par CodeCowboyOrg
Moses Machua
Réponse modifiée au lien vers l'archive Wayback de l'article sur robbagby.com.
Prometheus
23

Si vous essayez de créer un certificat auto-signé qui vous permet de partir http://localhost/mysite , voici un moyen de le créer

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

De http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200

David Burela
la source
2
où est allé mon certificat: o ce n'est pas dans C: \ Windows \ system32
EaterOfCode
2
À propos, l'outil makecert.exe est utilisé via l'invite de commande Visual Studio pour les futurs lecteurs. Vous pouvez également utiliser les outils du kit de ressources Internet Information Services (IIS) et installer SelfSSL 1.0. microsoft.com/downloads/en/…
atconway
3
Bien que les réponses rapides soient excellentes, elles n'aident pas toujours. «Le certificat ne peut pas être utilisé comme certificat de serveur SSL» est une erreur que je vois dans IIS7. Op avait également mentionné les avertissements du navigateur et non "Comment créer un certificat"?
cmroanirgo du
Vous pouvez omettre le paramètre cert2spc step due pvk2pfx -spc accepte à la fois .spc et .cer
abatishchev
1
@EaterOfCode Mine était dans C: \ Windows \ SysWOW64
Bay Sola
10

Je recommanderais l'outil de Pluralsight pour créer des certificats auto-signés: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

Créez votre certificat au format .pfx et importez-le dans IIS. Et ajoutez-le en tant qu'autorité de certification racine de confiance.

cederlof
la source
1
Après avoir essayé toutes sortes de «magie» PowerShell et d'autres choses qui n'ont tout simplement pas fonctionné - l'outil de Pluralsight a généré un script de travail pour moi en 30 secondes chrono, et cela inclut le temps qu'il a fallu pour manger la pizza (+ télécharger et extraire l'outil, je veux dire). Comme j'utilise toujours Windows 7 sur cet ancien ordinateur portable, c'était la solution parfaite pour moi, merci!
Ade
1

Oui et non. Les certificats auto-signés entraînent ce message d'avertissement car le certificat n'a pas été signé par une autorité de certification approuvée. Il existe quelques options que vous pouvez envisager pour supprimer cet avertissement sur votre ordinateur local. Voir les réponses les mieux classées à cette question pour plus de détails:

Que dois-je faire pour qu'Internet Explorer 8 accepte un certificat auto-signé?

J'espère que cela t'aides!


ÉDITER:

Désolé, je n'étais pas au courant au départ que vous étiez contraint à localhost. Vous pouvez essayer de suivre les instructions sur le lien ci-dessous pour «Générer un certificat auto-signé avec le nom commun correct».

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html

Phil Klein
la source
Non, le message d'avertissement est là car l'URL ( localhost ) ne correspond pas au nom du certificat, qui est émis sous le nom de la machine. Si je passe à mymachinename, je n'obtiens pas l'erreur. Malheureusement, je dois utiliser localhost et non le nom de la machine pour des raisons qui n'affectent pas la question.
chris
1

vous pouvez essayer mkcert.

macos: brew install mkcert

clark yu
la source
0

Si vous utilisez Visual Studio, il existe un moyen simple de configurer et d'activer SSL à l'aide d'IIS Express expliqué ici

Amir Chatrbahr
la source