En essayant de suivre diverses instructions sur la création d'un certificat auto-signé à utiliser avec localhost, la plupart des instructions semblent être pour IIS, mais j'essaie d'utiliser Nodejs / Express. Aucun d'entre eux ne fonctionne correctement car bien que le certificat soit installé, il n'est pas approuvé. voici ce que j'ai essayé qui échoue:
- Comment puis-je créer un certificat auto-signé pour localhost?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
Quelqu'un peut-il proposer un flux de travail capable de faire cela? Je peux obtenir un certificat installé, mais je ne peux pas faire confiance au certificat dans Chrome (v32) ou IE (v10).
EDIT: il a été suggéré dans les commentaires que le problème n'est pas un cert-root de confiance. J'ai installé le cert via IE mais il n'est toujours pas fiable.
Réponses:
Les réponses ci-dessus étaient partielles. J'ai passé tellement de temps à faire fonctionner ça, c'est fou. Note à mon futur moi, voici ce que vous devez faire:
Je travaille sur Windows 10, avec Chrome 65. Firefox se comporte bien - il suffit de confirmer localhost comme une exception de sécurité et cela fonctionnera. Chrome ne:
Étape 1. dans votre backend, créez un dossier appelé
security
. nous allons y travailler.Étape 2. Créez un fichier de configuration de demande nommé
req.cnf
avec le contenu suivant (le mérite revient à: @Anshul )req.cnf:
Une explication de ces champs est ici .
Étape 3. Accédez au dossier de sécurité dans le terminal et tapez la commande suivante:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Étape 4. puis en dehors du
security
dossier, dans votre application express, faites quelque chose comme ceci: (le mérite revient à @Diego Mello)server.js:
Étape 5. Démarrez le serveur
node server.js
et accédez à https: // localhost: 3000 .À ce stade, nous avons la configuration du serveur. Mais le navigateur devrait afficher un message d'avertissement.
Nous devons enregistrer notre certificat auto-signé, en tant qu'autorité de certification de confiance CA, dans le magasin de certificats chrome / windows. (Chrome enregistre également cela dans Windows,)
Étape 6. Ouvrez les outils de développement dans Chrome, allez dans le panneau Sécurité, puis cliquez sur Afficher le certificat.
Étape 7. allez dans le panneau Détails, cliquez sur Copier le fichier, puis lorsque l'assistant d'exportation de certificat apparaît, cliquez sur Suivant comme ci-dessous:
Étape 8. laissez l'encodage DER, cliquez sur suivant, choisissez
Browse
, placez-le dans un dossier facile d'accès comme Desktop et nommez le certificatlocalhost.cer, then click Save and then Finish.
. Vous devriez pouvoir voir votre certificat sur le bureau.Étape 9. Ouvrez
chrome://settings/
en l'insérant dans la zone URL. En bas, cliquez surAdvanced / Advanced Options
, puis faites défiler vers le bas pour trouverManage Certificates
.Étape 10. Accédez au panneau Autorités de certification racines de confiance et cliquez sur importer.
Nous importerons le
localhost.cer
certificat que nous venons de terminer l'exportation à l'étape 8.Étape 11. Cliquez sur Parcourir, recherchez le
localhost.cer
, laissez les valeurs par défaut cliquez sur suivant plusieurs fois - jusqu'à ce que cet avertissement apparaisse, cliquez sur Oui.Étape 12. Fermez tout et redémarrez Chrome. Ensuite, lorsque vous y allez,
https://localhost:3000
vous devriez voir:la source
https://localhost:3000
et que Chrome est bloqué lors du chargement. N'importe qui peut dire quelle pourrait en être la raison?crl+shift+i
ouF12
pour ouvrir la console.DNS.1 = server.local
Ensuite, sur la machine de connexion, mettez à jour le fichier HOSTS pour faire pointer l'adresse IP du serveur vers le nom d'hôte, par exemple:192.168.0.50 server.local
Cela va permettre au certificat et à l'adresse de correspondre et valider le certificat.Chemin le plus court. Testé sur MacOS, mais peut fonctionner de la même manière sur d'autres OS.
Générer pem
Votre serveur express
https://localhost:3000
dans Google Chrome et vous verrez que ce n'est pas sécurisé. Encore!la source
Drag image to your desktop and double click it
-> Je ne peux rien faire glisser sur mon bureau, n'est pas déplaçable .. De quoiimage
parlez-vous exactement?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
place de la première ligne que vous avez suggérée. Et aussi celui-ci posera moins de questions dans le processus ...Vous pouvez essayer openSSL pour générer des certificats. Jetez un œil à ceci .
Vous allez avoir besoin d'un fichier .key et .crt pour ajouter HTTPS au serveur JS express du nœud. Une fois que vous avez généré cela, utilisez ce code pour ajouter HTTPS au serveur.
Cela fonctionne bien dans ma machine locale ainsi que sur le serveur sur lequel j'ai déployé cela. Celui que j'ai sur le serveur a été acheté à goDaddy mais localhost avait un certificat auto-signé.
Cependant, chaque navigateur a généré une erreur indiquant que la connexion n'est pas approuvée, voulez-vous continuer. Après avoir cliqué sur Continuer, cela a bien fonctionné.
Si quelqu'un a déjà contourné cette erreur avec un certificat auto-signé, veuillez éclaircir.
la source
openssl genrsa -out key.pem 2048
pour une meilleure clé.Comment générer un certificat SSL pour localhost: lien
vous devez entrer un mot de passe ici que vous devez retaper dans les étapes suivantes
lorsqu'on lui a demandé «Nom commun», saisissez: localhost
la source
cp server.crt /usr/local/share/ca-certificates/.
et exécutez lessudo update-ca-certificates
requêtes https de l'hôte local Ensuite, elles fonctionnent sous NodeJS 8+. Id augmenter également1024 to 2048
Voici ce qui fonctionne pour moi
sur windows
1) Ajoutez ceci à votre fichier% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (car le navigateur a des problèmes avec 'localhost' (pour les scripts d'origine croisée)
Windows Vista et Windows 7 Vista et Windows 7 utilisent le contrôle de compte d'utilisateur (UAC), le Bloc-notes doit donc être exécuté en tant qu'administrateur.
Cliquez sur Démarrer -> Tous les programmes -> Accessoires
Cliquez avec le bouton droit sur Bloc-notes et sélectionnez Exécuter en tant qu'administrateur
Cliquez sur Continuer dans la fenêtre UAC «Windows a besoin de votre autorisation».
Lorsque le Bloc-notes s'ouvre Cliquez sur Fichier -> Ouvrir
Dans le champ de nom de fichier, tapez C: \ Windows \ System32 \ Drivers \ etc \ hosts
Cliquez sur Ouvrir
Ajoutez ceci à votre fichier% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net
sauver
Fermer et redémarrer les navigateurs
Sur Mac ou Linux:
su
permission127.0.0.1 localdev.YOURSITE.net
Lors du développement, vous utilisez localdev.YOURSITE.net au lieu de localhost, donc si vous utilisez des configurations d'exécution / débogage dans votre ide, assurez-vous de le mettre à jour.
Utilisez ".YOURSITE.net" comme domaine cookied (avec un point au début) lors de la création du cookiem, il devrait fonctionner avec tous les sous-domaines.
2) créez le certificat en utilisant ce localdev.url
CONSEIL: Si vous rencontrez des problèmes pour générer des certificats sous Windows, utilisez plutôt une machine VirtualBox ou Vmware.
3) importez le certificat comme indiqué sur http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
la source
Mkcert de @FiloSottile rend ce processus infiniment plus simple:
mkcert -install
pour créer une autorité de certification localemkcert localhost 127.0.0.1 ::1
pour créer un certificat approuvé pour localhost dans le répertoire actuelexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Configuration de base du nœud:
la source
Si vous utilisez OSX / Chrome, vous pouvez ajouter le certificat SSL auto-signé à votre trousseau système comme expliqué ici: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and certificats-ssl-auto-signés
C'est un processus manuel, mais je l'ai finalement fait fonctionner. Assurez-vous simplement que le nom commun (CN) est défini sur "localhost" (sans le port) et une fois le certificat ajouté, assurez-vous que toutes les options de confiance sur le certificat sont définies sur "Toujours faire confiance". Assurez-vous également de l'ajouter au trousseau "Système" et non au trousseau "login".
la source
Si vous utilisez node, pourquoi ne pas les générer avec node? Ce module semble être assez complet:
Notez que je ne générerais pas à la volée. Générez avec une sorte de script de construction afin d'avoir un certificat et une clé cohérents. Sinon, vous devrez autoriser le certificat auto-signé nouvellement généré à chaque fois.
la source
Certaines des réponses publiées contiennent des éléments qui m'ont été très utiles pour surmonter ce problème également. Cependant, j'étais également intéressé par le nombre minimum d'étapes et, idéalement, en évitant OpenSSL (sous Windows 10).
Ainsi, un élément essentiel des réponses (crédit: @ TroyWorks ) est que vous devez modifier votre fichier HOSTS pour créer un serveur fictif et le mapper à 127.0.0.1. Cela suppose que vous allez faire du développement local.
Dans mon cas, j'utilisais le certificat SS pour sécuriser un websocket dans NodeJS, et ce socket était connecté par programme (par opposition à via un navigateur). Donc, pour moi, il était essentiel que le certificat soit accepté sans avertissements ni erreurs, et l'élément critique était d'obtenir le certificat créé avec un CN approprié (et bien sûr d'accepter le certificat dans les autorités de confiance, comme décrit ailleurs dans les réponses) . L'utilisation d'IIS pour créer un certificat auto-signé ne créera pas le CN approprié, j'ai donc découvert la commande simple suivante à l' aide de Powershell:
Cela doit être exécuté dans la console d'administration PS, mais cela fonctionne simplement et place le certificat dans la section "Personnel" du magasin de certificats LocalMachine. Vous pouvez vérifier qu'il a été créé en exécutant:
Pour lui faire confiance, copiez-le simplement et collez-le dans «Autorités de certification racines de confiance» à l'aide du Gestionnaire de certificats (en vous assurant que vous regardez les certificats de la machine locale, pas l'utilisateur actuel!).
Si vous vous liez à ce certificat dans IIS, vous devriez pouvoir accéder à https://gandalf.dummy.dev/ et obtenir une connexion sécurisée sans aucun avertissement.
La dernière pièce, en utilisant cela dans NodeJS, est décrite ci-dessus et dans d'autres réponses SO, donc je n'ajouterai que sur Windows, il est plus facile de travailler avec un fichier pfx qui combine le certificat et la clé privée. Vous pouvez facilement exporter un pfx à partir du gestionnaire de certificats, mais cela affecte la façon dont vous l'utilisez dans NodeJS. Lors de l'instanciation d'un serveur à l'aide du module 'https', les options que vous utiliseriez (au lieu de 'key' et 'cert') seraient 'pfx' et 'passphrase', comme dans:
la source
sous Windows, j'ai fait confiance au certificat de développement iis en utilisant MMC (démarrer> exécuter> mmc), puis j'ai ajouté le composant logiciel enfichable de certificat, en choisissant "ordinateur local" et en acceptant les valeurs par défaut. Une fois que ce composant logiciel enfichable de certificat est ajouté, développez l'arborescence des certificats de l'ordinateur local pour regarder sous Personnel, sélectionnez le certificat d'hôte local, cliquez avec le bouton droit> toutes les tâches> exporter. acceptez toutes les valeurs par défaut dans l'assistant d'exportation.
Une fois ce fichier enregistré, développez les certificats de confiance et commencez à importer le certificat que vous venez d'exporter.
https://localhost
fait désormais confiance à Chrome sans avertissement de sécurité.J'ai utilisé cette résolution de guide n ° 2 du blog MSDN, l'op a également partagé un lien dans sa question à propos de cela devrait également utiliser MMC, mais cela a fonctionné pour moi. résolution n ° 2
la source
Aller à:
chrome://flags/
Activer: autorise les certificats non valides pour les ressources chargées à partir de l'hôte local.
Vous ne disposez pas de la sécurité verte, mais vous êtes toujours autorisé à utiliser https: // localhost dans Chrome.
la source
Il y a plus d'aspects à cela.
Vous pouvez atteindre TLS (certains continuent de dire SSL) avec un certificat, auto-signé ou non.
Pour avoir une barre verte pour un certificat auto-signé, vous devez également devenir l'autorité de certification (CA). Cet aspect manque dans la plupart des ressources que j'ai trouvées lors de mon parcours pour atteindre la barre verte dans ma configuration de développement local. Devenir une autorité de certification est aussi simple que de créer un certificat.
Cette ressource couvre la création à la fois du certificat CA et d'un certificat serveur et a abouti à ma configuration en affichant une barre verte sur localhost Chrome, Firefox et Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Remarque: dans Chrome, vous devez ajouter le certificat CA à vos autorités de confiance.
la source
Si vous devez aller plus loin que les étapes détaillées de @ alon et créer également un CA auto-signé:
package.json
En utilisant localhost.cnf comme décrit:
la source