Créer un Certificat Auto-Signé dans IIS Express
À partir de ma compréhension, il est en fait possible de créer un certificat délivré à une adresse IP. Est-il possible de le faire dans IIS Express?
Veuillez noter que c'est à des fins de test.
Modifier
Les gens semblent être à côté de la vraie viande et les pommes de terre de ma question donc j'ai supprimé les détails supplémentaires.
Vous devez vous connecter pour publier un commentaire.
Merci @Bruno pour toutes vos suggestions!! À l'aide d'un autre outil pour créer le certificat SSL m'a fait aller dans la bonne direction.
J'ai d'abord essayé de l'IIS 6
selfssl
outil de ligne de commande qui aurait fonctionné aussi bien pour la première étape de l'obtention de ce travail (mais je ne l'ai pas testé après avoir trouvé ma solution actuelle). La première étape est de créer le certificat et la deuxième étape consiste à lier ce certificat à mon IP/Port.J'ai utilisé makecert à partir de l'Invite de Commande Visual Studio pour créer mon cert (c'est là que je pense que l'IIS 6 selfssl outil à partir du Kit de Ressources IIS 6 devrait fonctionner aussi bien). Après la création du certificat, je l'ai trouvé en vertu de Personnel/Certificats à l'aide de la
mmc
composant logiciel enfichable console et ajouter le composant logiciel enfichable Certificats.makecert -r -pe -n "CN=0.0.0.0" -b 01/01/2011 -e 01/01/2025 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
Pour lier le cert à mon IP/Port, j'ai utilisé netsh.
ipport
doit être changé à votre adresse IP/Port.appid
est un GUID et je ne crois pas que ce qui importe est ce que vous la définissez.certhash
vous pouvez obtenir à partir de laThumbnail
champ sur le certificat lui-même, mais vous devez supprimer les espaces dans la table de hachage.netsh http add sslcert ipport=0.0.0.0:44300 appid={AnyGuid} certhash=YourCertificateThumbprint
Comme je le disais dans cette réponse:
Pour SSL/TLS pour être sûr, vous avez besoin d'au moins 3 points:
Les deuxième et troisième points sont appliquées par votre certificat. Vous êtes confronté à un problème concernant le troisième point: le nom d'hôte de vérification.
À l'aide d'un certificat auto-signé est un substitut à l'aide d'un certificat émis par une autorité de certification (cadre d'une ICP). Cela vous indique que vous pouvez faire confiance le contenu du certificat est authentique (comme il est affirmé par l'émetteur). Par l'émission et l'utilisation d'un certificat auto-signé, vous affirmer son contenu vous-même. Vos clients auront confiance explicitement ce que vous dites. C'est très bien pour les petits déploiements où vous pouvez convaincre les clients à installer votre auto-signé cert de confiance cert.
Nom d'hôte de vérification est une étape obligatoire après ce. Si vous cochez l'identité d'une personne à l'aide de leur passeport, il n'est pas assez bon pour vérifier si il est un véritable passeport d'un pays vous reconnaître: vous devez également vérifier que l'image correspond à la personne en face de vous.
La même chose s'applique ici: ce que vous souhaitez vous connecter est donné mon le nom d'hôte (ou l'adresse IP), et il doit correspondre au nom d'hôte (ou l'adresse IP) dans le certificat, vous êtes présenté avec.
Bien sûr,
localhost
n'est jamais accessible à partir de la machine locale elle-même, un peu comme de dire "moi".En tant que serveur, vous avez besoin du nom dans le certificat à être ce que vos clients vont vous appeler.
Il est généralement préférable de le faire à l'aide d'un nom d'hôte plutôt qu'une adresse IP. Notez que, selon RFC 2818, si vous utilisez une adresse IP, il doit également l'être dans le Sujet autre Nom de l'extension (bien que certains navigateurs seront flexibles sur cette exigence).
(Vous pourriez également être intéressé par cette réponse. Même si c'est sur un serveur Java, les principes sont les mêmes, puisque le certificat de vérification est en place pour le client, ce qui pourrait être dans n'importe quelle langue.)
EDIT: (Vous avez éliminé une grande partie de votre question initiale, donc ma réponse ci-dessus peut ne pas complètement sens...)
En bref, oui, vous pouvez générer un certificat qui identifie une machine par une adresse IP.
En théorie (RFC 2818), l'adresse IP doit être dans les autres Noms de l'Objet (SAN) extension de votre certificat (ce serait un SAN de type "IP", pas "DNS"). Cependant, dans la pratique, cette section particulière de la spécification est que très peu suivie, de sorte que vous auriez probablement eu envie de vous faire une adresse IP dans le Nom Commun (CN) de votre Sujet DN. Si les navigateurs ne parviennent pas à mettre en œuvre RFC 2818 suffisamment, vous pourriez même être en mesure de s'en tirer avec l'aide de seulement
CN=your.ip.address
dans le Sujet DN, sans avoir besoin d'un SAN d'entrée. (Java les clients semblent être strict sur ce, mais cela peut ne pas être nécessaire pour votre cas de test.)Je ne suis pas sûr de ce que vous générer votre certificat.
makecert.exe
ne semble pas être en mesure de générer des certificats avec SANs, malheureusement.Dans ce cas, vous pouvez générer un certificat auto-signé à l'aide d'OpenSSL, par exemple (voir les notes au bas de cette réponse). Si nécessaire, créez un fichier PKCS#12 (avec l'extension
.pfx
ou.p12
fichier à partir de votre clé privée et le certificat généré (openssl pkcs12 -export -in cert.pem -inkey privkey.pem -out store.pfx
).Après cela, regarder dans la configuration du certificat dans votre
.pfx
fichier dans IIS Express. Vous devez importer le certificat et la clé privée dans votre magasin de certificats (le plus probable, en double-cliquant devrait déclencher le dialogue à droite). Puis, l'utiliser (comme s'il provenait d'une autorité de certification); en fonction de la façon dont vous êtes la configuration d'IIS, il peut nécessiter l'netsh
. Il semble y avoir un tutoriel ici: http://blogs.blackmarble.co.uk/blogs/rfennell/post/2011/03/22/how-to-expose-iis-express-to-external-network-connections-and-use-a-non-self-signed-certificate.aspx(Le
netsh
commandes sont également répertoriés dans cette question mentionné par @MrZombie: vous aurez à trouver votre certificat auto-signé de hachage par la recherche dans les certificats installés, et d'adapter le numéro de port en fonction de votre configuration.)Autant je comprends le problème, sauf si votre certificat est délivré par une autorité de certification avec une réelle crédibilité, vous allez continuer à recevoir l'erreur.
(Par "crédible autorité de certification" je veux dire "les lieux que vous acheter des certificats à partir de")
http://www.gerv.net/security/self-signed-certs/ <-- lecture Intéressante sur le sujet.
IIS et indépendant de la plateforme, tous vous avez besoin est d'un navigateur web:
http://www.selfsignedcertificate.com/
Oui, à partir de IIS, sélectionnez serveur de nom noeud à partir de la gauche, aller à des Certificats de Serveur. À partir de la droite à "l'Action" volet, sélectionnez Créer un Certificat Auto-Signé...Nom que le certificat et c'est tout ! Très simple...