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 depuis des systèmes externes. Par conséquent, je n'utilise pas localhost.
J'ai maintenant besoin de tester SSL et 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 uniquement fonctionne pour localhost. Ce certificat peut-il être utilisé à mes fins ou devrai-je créer un compte 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 service public ou service en ligne (Gratuit) puis-je utiliser pour cela?
Ajoute cette information parce que la réponse acceptée ne semble pas répondre pleinement à la question, ou du moins n'a pas résolu le problème pour moi.
Avec la fonctionnalité de certificat auto-signée d'IIS, vous ne pouvez pas définir le nom commun (CN) du certificat et vous ne pouvez donc pas créer de certificat lié à votre choix de sous-domaine.
Une solution au problème consiste à utiliser makecert.exe, qui est fourni avec le kit de développement .Net 2.0. Sur mon serveur c'est à:
C:\Program Files\Microsoft.Net\SDK\v2.0 64bit\Bin\makecert.exe
Vous pouvez créer une autorité de signature et la stocker dans le référentiel de certificats LocalMachine comme suit (ces commandes doivent être exécutées à partir d'un compte administrateur ou d'une invite de commande avec privilèges élevés):
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 identique à 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 l'article de Tom Hall.
Toutes nos félicitations pour cette solution à Mike O'Brien pour son excellent billet de blog sur http://www.mikeobrien.net/blog/creating-self-signed-wildcard
tilisation de PowerShell
À partir de Windows 8.1 et Windows Server 2012 R2 (Windows PowerShell 4.0), vous pouvez créer un certificat auto-signé à l'aide de la nouvelle cmdlet 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
tilisation du IIS Manager
www.domain.com
ou subdomain.domain.com
Pour créer le nouveau certificat pour votre domaine spécifique:
Ouvrez Powershell ISE en tant qu'administrateur, exécutez la commande suivante:
New-SelfSignedCertificate -DnsName *.mydomain.com, localhost -CertStoreLocation cert:\LocalMachine\My
Pour faire confiance au nouveau certificat:
Pour lier le certificat à votre site:
Je devais trouver mon chemin à travers des certificats auto-signés sous Windows en combinant des éléments des réponses fournies et des ressources supplémentaires. Voici ma propre (et j'espère complète) parcourir. J'espère que cela vous épargnera une partie de ma courbe d'apprentissage douloureuse. Il contient également des informations sur des sujets connexes qui apparaîtront tôt ou tard lors de la création de vos propres certificats.
N'utilisez pas makecert.exe. Il est obsolète par Microsoft.
La manière moderne utilise une commande Powershell.
Windows 10:
Ouvrez Powershell avec les 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. Supprimez-les simplement de la ligne de commande ci-dessus.
Ouvrez Powershell avec les privilèges d’administrateur:
New-SelfSignedCertificate -DnsName "*.dev.local", "dev.local", "localhost" -CertStoreLocation cert:\LocalMachine\My
Les deux commandes ci-dessus créent un certificat pour les domaines localhost
et *.dev.local
.
La version Win10 a également une durée de vie de 15 ans et un nom d'affichage lisible "Dev Cert * .dev.local, dev.local, localhost".
Mise à jour: 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 (AKA Nom commun). La liste complète de toutes les entrées de nom d'hôte sera stockée dans la zone Subject Alternative Name (SAN) du certificat. (Merci à @BenSewards pour l'avoir signalé.)
Après la création, le certificat sera immédiatement disponible dans toutes les liaisons HTTPS de IIS (instructions ci-dessous).
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 certificat dans le magasin de certificats pour les autorités de certification racines de confiance sur votre ordinateur:
Ouvrez mmc.exe, Fichier → Ajouter/Supprimer un composant logiciel enfichable → choisissez "Certificats" dans la colonne de gauche → Ajouter → choisissez "Compte d'ordinateur" → Suivant → "Ordinateur local ..." → Terminer → OK
Exportez votre certificat de votre magasin personnel
Dans la colonne de gauche, choisissez "Certificats (ordinateur local)/Personnel/Certificats".
Recherchez le nouveau certificat créé (dans Win 10, la colonne "Nom convivial" peut vous aider).
Cliquez avec le bouton droit de la souris sur ce certificat → Toutes les tâches → Exporter ... → Suivant → choisissez "Non, ne exportez pas la clé privée" → Suivant → choisissez "DER codé ..." → Suivant → entrez le nom du fichier et enregistrer.
Astuce: Nous n'utilisons délibérément pas le format de fichier PFX pour l'exportation. Cela inclurait votre clé privée dans le fichier d'exportation et vous ne voudriez généralement pas que votre clé privée aille n'importe où!
Importez votre certificat dans votre magasin d'autorités de certification racines de confiance
Dans la colonne de gauche, cliquez avec le bouton droit de la souris sur "Certificats (ordinateur local)/Autorités de certification racines/certificats approuvés" → Toutes les tâches → Importer ... → Suivant → choisissez le fichier que vous venez d'exporter → Suivant → "Placez tous les certificats dans le magasin suivant: Autorités de certification racines de confiance "→ Suivant → Terminer.
Utilisation en ISS
Vous pouvez maintenant accéder à 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 valable 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 doivent considérer le certificat comme digne de confiance et charger votre site Web lorsque vous ouvrez https://myname.dev.local
.
Firefox maintient 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, des actions supplémentaires peuvent être nécessaires (voir plus bas).
Pour tester vos certificats, Firefox est votre meilleur choix. (Croyez-moi, je suis unChrome fan-boy moi-même, mais FF est meilleur dans ce cas.)
Voici les raisons:
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 fait confiance à ce certificat que si vous ajoutez une exception. Le bouton pour faire cela est juste en dessous des avertissements.
Le certificat n'est pas valide pour le nom ...
Cet avertissement montre que vous avez commis une erreur. Le domaine (caractère générique) de votre certificat ne correspond pas au domaine de votre site Web. Le problème doit être résolu en modifiant 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 dans Chrome avec une telle combinaison.
Firefox peut afficher de nombreux autres avertissements de certificats compréhensibles et agréables à cet endroit, tels que les certs expirés, les certs avec des algorithmes de signature périmés, etc.
Dans la commande New-SelfSignedCertificate ci-dessus, nous avons utilisé le domaine générique *.dev.local
.
Vous pensez peut-être: 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 un nom de domaine de second niveau.
Ainsi, les domaines de la forme *.local
sont agréables pour développer des sites Web HTTP. Mais pas tellement pour HTTPS, car vous seriez obligé d’émettre un nouveau certificat correspondant pour chaque nouveau projet que vous démarrez.
Notes importantes:
motör_head.dev.local
à votre modèle générique *.dev.local
. Ils se conformeront lorsque vous basculerez sur motoer-head.dev.local
.*.dev.local
correspond à myname.dev.local
mais PAS other.myname.dev.local
!*.*.dev.local
) ne sont PAS possibles dans les certificats. Donc, other.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 niveau 4. Mettez toutes vos variations dans la troisième partie. De cette façon, vous obtiendrez un seul certificat pour tous vos sites de développement.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 ne peut afficher aucun contenu à l'ouverture de myname.dev.local
.
La raison en est une caractéristique de la gestion de réseau de Windows 10 pour les applications modernes, appelée "isolation du réseau".
Pour résoudre ce problème, ouvrez une commande avec les privilèges d'administrateur et entrez la commande suivante une fois:
CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
Vous trouverez plus d'informations sur Edge et l'isolation de réseau ici: https://blogs.msdn.Microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-Microsoft-Edge/
J'ai rencontré le même problème lorsque je voulais activer SSL sur un projet hébergé sur IIS 8. Enfin, l'outil que j'ai utilisé était OpenSSL , après plusieurs jours de lutte avec makecert commands.Le certificat est généré dans Debian, mais je peux l’importer de manière transparente dans IIS 7 et 8.
Téléchargez le fichier OpenSSL compatible avec votre système d'exploitation et le fichier de configuration this . Définissez le fichier de configuration en tant que configuration par défaut d'OpenSSL.
Nous allons d'abord générer la clé privée et le certificat de l'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 suivants: Nous allons maintenant générer la demande de certificat, c'est-à-dire le fichier envoyé aux autorités de certification.
Le nom commun doit être défini sur 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
La demande de certificat est maintenant signée avec le certificat de 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é dans un fichier .pfx pouvant être importé dans 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.
Sur votre serveur, vous devez importer le certificat de l'autorité de certification dans les autorités de certification racines de confiance, car IIS peut approuver l'importation du certificat. N'oubliez pas que le certificat à importer dans IIS a été signé avec le certificat de l'autorité de certification.
Avec cette étape, le IIS fait confiance à l’authenticité de notre certificat.
Dans notre dernière étape, nous allons importer le certificat dans IIS et ajouter le site de liaison.
Allez maintenant sur votre site sur IIS Manager et sélectionnez Liaisons ... et Ajoutez une nouvelle liaison.
Sélectionnez https comme type de liaison et vous devriez pouvoir voir le certificat importé.
Une autre option consiste à créer un certificat auto-signé vous permettant de spécifier le nom de domaine par site Web. Cela signifie que vous pouvez l'utiliser sur plusieurs noms de domaine.
Dans IIS Manager
Maintenant, sur votre site Web dans IIS ...
Un autre moyen simple de générer un certificat auto-signé consiste à utiliser Jexus Manager,
https://www.jexusmanager.com/en/latest/tutorials/self-signed.html