Comment créer un certificat auto-signé pour un nom de domaine pour le développement?
J'ai subdomain.example.com
, que j'utilise à des fins de développement. Ma solution d'application web contient une API web, etc., que je dois appeler à partir de systèmes externes, donc je n'utilise pas localhost.
Je dois maintenant tester SSL et avoir besoin d'un certificat pour mon nom de domaine de développement subdomain.example.com
.
J'ai essayé de créer un certificat auto-signé comme indiqué dans http://technet.microsoft.com/en-us/library/cc753127 (v=ws.10).aspx , mais ce certificat ne fonctionne que pour localhost. Cela peut-il le certificat sera utilisé à mes fins ou devrai-je créer un auto-signé pour mon sous-domaine de développement? Si je dois créer une certification auto-signée pour mon sous-domaine de développement, quel utilitaire ou service en ligne (gratuit) puis-je utiliser pour cela?
8 réponses
J'ajoute cette information parce que la réponse acceptée ne semble pas répondre complètement à la question, ou du moins n'a pas résolu le problème pour moi.
Avec la fonctionnalité de certificat auto-signé D'IIS, vous ne pouvez pas définir le nom commun (CN) pour le certificat et ne pouvez donc pas créer un certificat lié à votre choix de sous-domaine.
Une façon de contourner le problème est d'utiliser makecert.exe, qui est livré avec le. net 2.0 SDK. Sur mon serveur c'est à:
C:\Program Files\Microsoft.Net\SDK\v2.0 64bit\Bin\makecert.exe
Vous pouvez créer un signing authority et stockez - le dans le référentiel de certificats LocalMachine comme suit (ces commandes doivent être exécutées à partir d'un compte administrateur ou dans une invite de commande élevée):
makecert.exe -n "CN=My Company Development Root CA,O=My Company,
OU=Development,L=Wallkill,S=NY,C=US" -pe -ss Root -sr LocalMachine
-sky exchange -m 120 -a sha1 -len 2048 -r
Vous pouvez ensuite créer un certificat lié à votre sous-domaine et signé par votre nouvelle autorité:
(notez que la valeur du paramètre-in doit être la même que la valeur CN utilisée pour générer votre autorité ci-dessus.)
makecert.exe -n "CN=subdomain.example.com" -pe -ss My -sr LocalMachine
-sky exchange -m 120 -in "My Company Development Root CA" -is Root
-ir LocalMachine -a sha1 -eku 1.3.6.1.5.5.7.3.1
Votre certificat devrait alors apparaître dans IIS Manager pour être lié à votre site comme expliqué dans le post de Tom Hall.
Tous les félicitations pour cette solution à Mike O'Brien pour son excellent billet de blog à http://www.mikeobrien.net/blog/creating-self-signed-wildcard
Utilisation De PowerShell
Depuis Windows 8.1 et Windows Server 2012 R2 (Windows PowerShell 4.0) et vers le haut, vous pouvez créer un certificat auto-signé à l'aide de la nouvelle applet de commande New-SelfSignedCertificate
:
Exemples:
New-SelfSignedCertificate -DnsName www.mydomain.com -CertStoreLocation cert:\LocalMachine\My
New-SelfSignedCertificate -DnsName subdomain.mydomain.com -CertStoreLocation cert:\LocalMachine\My
New-SelfSignedCertificate -DnsName *.mydomain.com -CertStoreLocation cert:\LocalMachine\My
Utilisation du Gestionnaire IIS
- lancez le Gestionnaire IIS
- au niveau du serveur, sous IIS, sélectionnez Certificats de Serveur
- à droite, sous Actions, sélectionnez Créer un certificat auto-signé
- où il est dit "Spécifiez un nom convivial pour le certificat", saisissez un nom approprié pour référence.
- Exemples:
www.domain.com
ousubdomain.domain.com
- Exemples:
- ensuite, sélectionnez votre site Web dans la liste à gauche
- sur le côté droit sous Actions sélectionnez liaisons
- ajoutez une nouvelle liaison HTTPS et sélectionnez le certificat que vous venez de créer (si votre certificat est un certificat générique, vous devrez spécifier un nom d'hôte)
- cliquez sur OK et testez-le.
Pour Créer le nouveau certificat pour votre domaine spécifique:
Ouvrez PowerShell ISE en tant qu'administrateur, exécutez la commande:
Nouveau-SelfSignedCertificate -DnsName *.mydomain.com localhost -CertStoreLocation cert:\LocalMachine\Mes
De faire confiance au nouveau certificat:
Ouvrir mmc.exe
Accédez à la racine de la Console - > certificats (ordinateur Local) - > personnel
Sélectionnez le certificat que vous avez créé, faites un clic droit - > Toutes les tâches - > assistant d'exportation pour créer une .fichier pfx
Allez dans racine de la Console - > certificats - > Autorités de Certification racine de confiance et importez le nouveau .fichier pfx
Pour lier le certificat de votre site:
Ouvrir le Gestionnaire IIS
Sélectionnez votre site et choisissez Modifier le Site -> liaisons dans le volet de droite
Ajoute une nouvelle liaison https avec le nom d'hôte correct et le nouveau certificat
J'ai rencontré ce même problème quand je voulais activer SSL à un projet hébergé sur IIS 8. Enfin, l'outil que j'ai utilisé était OpenSSL , après plusieurs jours de combat avec les commandesmakecert .Le certificat est généré dans Debian, mais je pourrais l'importer de manière transparente dans IIS 7 et 8.
Télécharger le OpenSSL compatible avec votre système d'exploitation et ce fichier de configuration. Définissez le fichier de configuration comme configuration par défaut D'OpenSSL.
D'abord nous allons générer la clé privée et le certificat D'Autorité de Certification (CA). Ce certificat doit signer la demande de certificat (CSR).
Vous devez remplir tous les champs requis dans ce processus.
openssl req -new -x509 -days 3650 -extensions v3_ca -keyout root-cakey.pem -out root-cacert.pem -newkey rsa:4096
Vous pouvez créer un fichier de configuration avec les paramètres par défaut comme ceci: Maintenant, nous allons générer la demande de certificat, qui est le fichier qui est envoyé aux Autorités de Certification.
Le nom commun doit être défini comme le domaine de votre site, par exemple: public.organization.com.
openssl req -new -nodes -out server-csr.pem -keyout server-key.pem -newkey rsa:4096
Maintenant, la demande de certificat est signée avec le certificat CA généré.
openssl x509 -req -days 365 -CA root-cacert.pem -CAkey root-cakey.pem -CAcreateserial -in server-csr.pem -out server-cert.pem
Le certificat généré doit être exporté vers A.fichier pfx qui peut être importé dans L'IIS.
openssl pkcs12 -export -out server-cert.pfx -inkey server-key.pem -in server-cert.pem -certfile root-cacert.pem -name "Self Signed Server Certificate"
Dans cette étape, nous allons importer le certificat CA.
-
Dans votre serveur, vous devez importer le certificat D'autorité de certification Les autorités de Certification racine de confiance, pour IIS peuvent faire confiance au certificat à importer. Rappelez-vous que le certificat à importer dans L'IIS, a été signé avec le certificat de L'autorité de certification.
- Ouvrez l'Invite de Commande et tapez mmc.
- Cliquez sur Fichier.
- Sélectionnez Ajouter/Supprimer un composant logiciel enfichable....
- Double-cliquez sur Certificats.
- Sélectionnez Compte D'Ordinateur et Suivant - > .
- sélectionner Ordinateur Local et Finition.
- Ok .
- Aller Certificats -> Autorités de Certification Racine approuvées -> les Certificats, clic droit sur Certificats et sélectionnez Toutes les Tâches -> Importer ...
- Sélectionnez Suivant -> Parcourir ...
- , Vous devez sélectionner Tous les Fichiers pour parcourir l'emplacement de racine-cacert.pem fichier.
- Cliquez sur Suivant et sélectionnez Placer tous les certificats dans le magasin suivant: Autorités de Certification Racine approuvées.
- Cliquez sur Suivant et Finition.
Avec cette étape, L'IIS fait confiance à l'authenticité de notre certificat.
-
Dans notre dernière étape, nous importerons le certificat dans IIS et ajouterons le site de liaison.
- ouvrir Internet Information Services (IIS) Gestionnaire {[8] } ou tapez inetmgr à l'invite de commande et accédez à Certificats de Serveur .
- cliquez sur importer....
- définir le chemin de .fichier pfx, la phrase secrète et sélectionnez le magasin de certificats sur hébergement web .
- Cliquez sur {[7],} OK.
Maintenant, allez sur votre site sur IIS Manager et sélectionnez Bindings... et Ajouter une nouvelle liaison.
Sélectionnez https comme type de liaison et vous devriez être en mesure de voir le certificat importé.
- Cliquez sur {[7],} OK et tout est fait.
J'ai dû me frayer un chemin à travers les certificats auto-signés sur Windows en combinant des morceaux des réponses données et d'autres ressources. Voici mon propre (et j'espère complet) walk-through. J'espère que cela vous épargnera une partie de ma propre courbe d'apprentissage douloureuse. Il contient également des informations sur des sujets connexes qui apparaîtront tôt ou tard lorsque vous créez vos propres certificats.
Créer un certificat auto-signé sous Windows
N'utilisez pas makecert.EXE. Il a été déprécié par Microsoft.
La manière moderne utilise une commande Powershell.
Fenêtres 10:
Ouvrez Powershell avec des privilèges D'administrateur:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My -FriendlyName "Dev Cert *.dev.local, dev.local, localhost" -NotAfter (Get-Date).AddYears(15)
Windows 8, Windows Server 2012 R2:
Dans Powershell sur ces systèmes, les paramètres-FriendlyName et-NotAfter n'existent pas. Il suffit de les supprimer de la ligne de commande ci-dessus.
Ouvrez Powershell avec des privilèges D'administrateur:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My
Le certificat résultant
Les deux les commandes ci-dessus créent un certificat pour les domaines localhost
et *.dev.local
.
La version Win10 a en outre une durée de vie de 15 ans et un nom d'affichage lisible de " Dev Cert *.dev.local, dev.local, localhost".
Update: Si vous fournissez plusieurs entrées de nom d'hôte dans le paramètre -DnsName
(comme indiqué ci-dessus), la première de ces entrées deviendra le sujet du domaine (alias nom commun). La liste complète de toutes les entrées de nom d'hôte sera stockée dans le champ Sujet nom alternatif (SAN) du certificat. (Merci à @bensewards pour le souligner.)
Après la création, le certificat sera immédiatement disponible dans toutes les liaisons HTTPS D'IIS (instructions ci-dessous).
Faites confiance au certificat
Le nouveau certificat ne fait partie d'aucune chaîne de confiance et n'est donc considéré comme digne de confiance par aucun navigateur. Pour changer cela, nous allons copier le cert dans le magasin de certificats pour les CAs root de confiance sur votre machine:
Ouvrez mmc.exe, Fichier → Ajouter / Supprimer composant logiciel enfichable → choisissez "Certificats" dans la colonne de gauche → Ajouter → sélectionner "Compte d'Ordinateur" → Suivant → "Ordinateur Local..."→ Terminer → OK
Exportez votre certificat depuis votre boutique personnelle
Dans la colonne de gauche, choisissez "certificats (ordinateur Local) / personnel / certificats".
Trouvez le cert nouvellement créé (dans Win 10, la colonne "nom convivial" peut aider).
Cliquez avec le bouton droit sur ce certificat → toutes les tâches → exporter... → Suivant → choisissez "Non, n'exportez pas la clé privée" → suivant → choisissez " DER encoded..." → Suivant → Entrez le nom du fichier et enregistrez-le.
Conseil: nous n'utilisons pas délibérément le format de fichier PFX pour l'exportation. Il inclurait votre clé privée dans le fichier d'exportation et vous ne voulez généralement pas que votre clé privée aille n'importe où!
Importez votre certificat dans votre magasin Root cas de confiance
Dans la colonne de gauche clic droit sur "Certificats (Ordinateur Local) / certification Racine / Certificats" → Toutes les Tâches → Importer... → Suivant → choisissez le fichier que vous venez d'exporter → suivant → " placer tous les certificats dans le magasin suivant: certification Racine" → Suivant → Terminer.
Utilisation dans ISS
Maintenant, vous pouvez aller à IIS Manager, sélectionnez les liaisons d'un site Web local → Ajouter → https → entrez un nom d'hôte de la forme myname.dev.local
(votre certificat n'est valide que pour *.dev.local
) et sélectionnez le nouveau certificat → OK.
Ajouter aux hôtes
Ajoutez également votre nom d'hôte à C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 myname.dev.local
Heureux
Maintenant Chrome et IE devraient traiter le certificat comme digne de confiance et charger votre site Web lorsque vous ouvrez https://myname.dev.local
.
Firefox gère son propre magasin de certificats. Pour ajouter votre certificat ici, vous devez ouvrir votre site Web dans FF et l'Ajouter aux exceptions lorsque FF vous avertit du certificat.
Pour le navigateur Edge, il peut y avoir plus d'action nécessaire (Voir plus bas).
Tester le certificat
Pour tester vos certificats, Firefox est votre meilleur choix pour plusieurs raisons:
- Firefox utilise sa propre mise en cache SSL, qui est purgée lors de shift-reload. Ainsi, toute modification des certificats de vos sites Web locaux reflétera immédiatement les avertissements de FF, tandis que d'autres navigateurs peuvent avoir besoin d'un redémarrage ou d'une purge manuelle du cache SSL de windows.
- FF vous donne également quelques conseils précieux pour vérifier la validité de votre certificat: cliquez sur Avancé lorsque FF affiche son avertissement de certificat. FF vous montrera un court bloc de texte avec un ou plusieurs avertissements possibles dans les lignes centrales du bloc de texte:
Le certificat n'est pas approuvé car il est auto-signé.
Cet avertissement est correct! Comme indiqué ci-dessus, Firefox n'utilise pas le magasin de certificats Windows et ne fera confiance à ce certificat que si vous y ajoutez une exception. Le bouton pour ce faire est juste en dessous des avertissements.
, Le certificat n'est pas valide pour le nom ...
Cet avertissement montre que vous avez fait quelque chose Faux. Le domaine (générique) de votre certificat ne correspond pas au domaine de votre site web. Le problème doit être résolu en changeant le (sous-)domaine de votre site web ou en émettant un nouveau certificat correspondant. En fait, vous pouvez ajouter une exception dans FF même si le certificat ne correspond pas, mais vous n'obtiendrez jamais un symbole de cadenas vert en Chrome avec une telle combinaison.
BTW: Firefox peut afficher de nombreux autres avertissements de cert agréables et compréhensibles à cet endroit, comme les certs expirés, les certs avec des algorithmes de signature obsolètes, etc. Je n'ai trouvé aucun autre navigateur qui m'a donné ce niveau de rétroaction pour clouer tous les problèmes. (Et je suis un fan-boy Chrome. :)
Quel (sous-)modèle de domaine devrais-je choisir de développer?
Dans la commande New-SelfSignedCertificate ci-dessus, nous avons utilisé le domaine Générique *.dev.local
.
, Vous pouvez penser: Pourquoi ne pas utiliser *.local
?
Raison Simple: il est illégal en tant que domaine générique.
Les certificats génériques doivent contenir au moins deuxième niveau du nom de domaine.
Ainsi, les domaines de la forme *.local
sont agréables à développer des sites Web HTTP. Mais pas tellement pour HTTPS, car vous seriez obligé de délivrer un nouveau certificat correspondant pour chaque nouveau projet que vous démarrez.
Notes secondaires importantes:
- les domaines hôtes valides ne peuvent contenir que des lettres A, Z, Chiffres, tirets et points. Aucun soulignement autorisé! Certains navigateurs sont vraiment pointilleux sur ce détail et peut vous donner un moment difficile quand ils refusez obstinément de faire correspondre votre domaine
motör_head.dev.local
à votre modèle générique*.dev.local
. Ils seront conformes lorsque vous passez àmotoer-head.dev.local
. - un caractère générique dans un certificat ne correspond qu'à une seule étiquette (= section entre deux points) dans un domaine, jamais plus.
*.dev.local
correspond àmyname.dev.local
mais pas àother.myname.dev.local
! - les caractères génériques multi-niveaux (
*.*.dev.local
) ne sont pas possibles dans les certificats. Doncother.myname.dev.local
ne peut être couvert que par un caractère générique de la forme*.myname.dev.local
. Par conséquent, il est préférable de ne pas utiliser une partie de domaine de quatrième niveau. Mettre tous les vos variations dans la partie de troisième niveau. De cette façon, vous vous entendrez avec un seul certificat pour tous vos sites de développement.
Le problème avec Edge
Il ne s'agit pas vraiment de certificats auto-signés, mais toujours liés à l'ensemble du processus:
Après avoir suivi les étapes ci-dessus, Edge peut ne pas afficher tout contenu lorsque vous ouvrez myname.dev.local
.
La raison en est une caractéristique de la gestion du réseau de Windows 10 pour les applications modernes, appelée " réseau Isolement".
Pour résoudre ce problème, ouvrez une invite de commande avec des privilèges D'administrateur et entrez la commande suivante Une fois:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Plus d'informations sur L'Isolation Edge et Network peuvent être trouvées ici: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/
Une autre option consiste à créer un certificat auto-signé qui vous permet de spécifier le nom de domaine par site web. Cela signifie que vous pouvez l'utiliser sur de nombreux noms de domaine.
Dans le Gestionnaire IIS
- Cliquez sur le nœud nom de la machine
- Ouvrir Les Certificats Du Serveur
- dans le panneau Actions, choisissez 'Créer un certificat auto-signé'
- dans ' spécifiez un nom convivial...'nommez-le *Dev (sélectionnez 'Personal' dans la liste des types)
- Enregistrer
Maintenant, sur votre site web en IIS...
- Gérer les liaisons
- Créer une nouvelle liaison pour Https
- Choisissez votre certificat auto-signé dans la liste
- Une fois sélectionné, la zone Nom de domaine sera activée et vous pourrez entrer votre nom de domaine.
Un Autre moyen facile de générer un certificat auto-signé est d'utiliser Jexus Manager,
- Choisissez un nœud de serveur dans le panneau connexions.
- dans le panneau central, cliquez sur L'icône certificats de serveur pour ouvrir la page de gestion.
- sous le panneau Actions, cliquez sur " Générer un certificat auto-signé..."élément de menu.
Https://www.jexusmanager.com/en/latest/tutorials/self-signed.html
Le certificat auto-signé peut être créé avec une seule ligne à l'aide du script PowerShell à l'aide de l'applet de commande ci-dessous.
Applet De Commande : Nouvelle-SelfSignedCertificate
Exemple: New-SelfSignedCertificate-FriendlyName USProd_Certif-DnsName PRODCD-USCertificate-CertStoreLocation Cert: \ LocalMachine\My
Exemple : http://dotnet-helpers.com/powershell/create-custom-name-self-signed-certificate-using-powershell/