web-dev-qa-db-fra.com

Comment créer un certificat auto-signé pour un nom de domaine à développer?

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?

112
Moiz Tankiwala

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

128
jlmt

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

  1. Lancez le IIS Manager
  2. Au niveau du serveur, sous IIS, sélectionnez Certificats de serveur.
  3. Sur le côté droit, sous Actions, sélectionnez Créer un certificat auto-signé.
  4. Où il est indiqué "Spécifiez un nom convivial pour le certificat", saisissez un nom approprié pour référence.
    1. Exemples: www.domain.com ou subdomain.domain.com
  5. Ensuite, sélectionnez votre site Web dans la liste de gauche
  6. Sur le côté droit, sous Actions, sélectionnez Liaisons.
  7. 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 devez spécifier un nom d'hôte).
  8. Cliquez sur OK et testez-le.
111
Tom Hall

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:

  • Ouvrez mmc.exe
  • Allez à 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 -> Exporter et suivez l'assistant d'exportation pour créer un fichier .pfx
  • Allez à la racine de la console -> Certificats -> Autorités de certification racines de confiance et importez le nouveau fichier .pfx

Pour lier le certificat à votre site:

  • Ouvrir IIS Manager
  • Sélectionnez votre site et choisissez Modifier le site -> Liaisons dans le volet de droite.
  • Ajouter une nouvelle liaison https avec le nom d'hôte correct et le nouveau certificat
48
DivineOps

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.

Créer un certificat auto-signé sur Windows 10

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

Le certificat obtenu

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).

Faire 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 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).

Tester le certificat

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:

  • Firefox utilise son propre cache SSL, qui est purgé lors du rechargement par équipes. Ainsi, toute modification apportée aux certificats de vos sites Web locaux sera immédiatement reflétée dans les avertissements de FF, tandis que les autres navigateurs peuvent nécessiter un redémarrage ou une purge manuelle du cache SSL de Windows.
  • De plus, FF vous donne de précieux conseils 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 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.

Quel modèle de sous-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 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:

  • Les domaines hôtes valides peuvent contenir UNIQUEMENT des lettres telles que z, chiffres, traits d'union et points. Aucun soulignement autorisé! Certains navigateurs sont très pointilleux sur ce détail et peuvent vous donner du fil à retordre s'ils refusent obstinément de faire correspondre votre domaine motör_head.dev.local à votre modèle générique *.dev.local. Ils se conformeront lorsque vous basculerez sur motoer-head.dev.local.
  • Un caractère générique dans un certificat correspond uniquement à UNE é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. 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.

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 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/

26
Jpsy

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.

  1. 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 .

  1. 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é.

  1. 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.

  1. 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.

  1. 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.

    • 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électionnez Ordinateur local et Terminer .
    • Ok .
    • Allez à Certificats -> Autorités de certification racines de confiance -> Certificats , cliquez sur Certificates et sélectionnez Toutes les tâches -> Importer ...

enter image description here

  • Sélectionnez Suivant -> Parcourir ...
  • Vous devez sélectionner Tous les fichiers pour parcourir l’emplacement de root-cacert.pem fichier.
  • Cliquez sur Suivant et sélectionnez Placez tous les certificats dans le magasin suivant : Autorités de certification racines de confiance .
  • Cliquez sur Suivant et Terminer .

enter image description here

Avec cette étape, le IIS fait confiance à l’authenticité de notre certificat.

  1. Dans notre dernière étape, nous allons importer le certificat dans IIS et ajouter le site de liaison.

    • Ouvrez le Gestionnaire des services Internet (IIS) ou tapez inetmgr à l’invite de commande et accédez à Certificats de serveur .
    • Cliquez sur Importer ... .
    • Définissez le chemin du fichier .pfx, la phrase secrète et sélectionnez le magasin de certificats sur Hébergement Web .

enter image description here

  • Cliquez sur OK.
  • 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é.

  • Cliquez sur OK et tout est terminé.

enter image description here

16
Joseph

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

  1. Cliquez sur le noeud du nom de la machine
  2. Certificats Open Server
  3. Dans le panneau Actions, choisissez "Créer un certificat auto-signé".
  4. Dans "Spécifiez un nom convivial ...", nommez-le * Dev (sélectionnez "Personnel" dans la liste des types).
  5. Sauver

Maintenant, sur votre site Web dans IIS ...

  1. Gérer les reliures
  2. Créer une nouvelle liaison pour Https
  3. Choisissez votre certificat auto-signé dans la liste
  4. Une fois sélectionné, le champ du nom de domaine devient activé et vous pourrez entrer votre nom de domaine.

enter image description here

2
testpattern

Un autre moyen simple de générer un certificat auto-signé consiste à utiliser Jexus Manager,

Jexus Manager

  1. Choisissez un nœud de serveur dans le panneau Connexions.
  2. Dans le panneau du milieu, cliquez sur l'icône Certificats de serveur pour ouvrir la page de gestion.
  3. Sous le panneau Actions, cliquez sur l'élément de menu "Générer un certificat auto-signé ...".

https://www.jexusmanager.com/en/latest/tutorials/self-signed.html

0
Lex Li