En utilisant netsh, lier un certificat SSL à un numéro de port est un échec
j'ai suivi les instructions dans SSL avec service WCF auto-hébergé . Quand j'essaie de lier le certificat sur Windows 7 en utilisant netsh comme décrit dans comment configurer un Port avec un certificat SSL. , il est défaillant comme suit.
Dans Windows PowerShell
PS C:> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
Dans une invite de commande
C:>netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
9 réponses
je me suis battu avec ça pour que mon IIS Express fasse correctement la SSL. Il s'avère que mon certificat était dans le magasin Trusted Root Certification Authorities au lieu du magasin Personal Certificates . C'est ce qui a fonctionné pour moi:
- assurez-vous que votre certificat est dans "certificats(ordinateur Local) / personnel / certificats "
-
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
Certificat SSL - avec succès ajouté
- utilisez le certificat MMC et drag où vous voulez qu'il aille.
j'ai trouvé 4 causes possibles d'erreur 1312 dans mes liaisons de ports:
- le certificat SSL est corrompu - vous devez supprimer du cert store et re-ajouter.
- le certificat SSL n'a pas de clé privée - vous devez supprimer le certificat du magasin du certificat et ajouter à nouveau le certificat public/privé complet, ou autrement joindre la clé privée à votre certificat.
- si vous installez sur une version pré-SP1 de 2012R2, vous pouvez avoir besoin de KB 981506.
- Vous avez ajouté le certificat SSL à votre magasin d'utilisateur, et non pas la machine locale cert magasin - supprimer dans le magasin de l'utilisateur, et l'ajouter au magasin de l'ordinateur.
la source de l'erreur est que j'ai pris l'empreinte du pouce directement du fichier de certificat de signroot.cert, qui est créé à partir de la première commande makecert nécessaire pour créer "Trusted Root Certification Authorities", qui est utilisé à nouveau pour vraiment créer(et installer) le certificat de confiance sigend dans la seconde commande makecert.
la seconde commande makecert installe également les certificats créés dans les " certificats (ordinateur Local) -> Personnel - > nœud de certificats."On doit rafraîchir le MMC actuellement ouvert à nouveau pour voir le certificat "localhost" et L'empreinte du pouce doivent être prises à partir de ces certificats, mais pas de signroot.cert.
si ce n'est toujours pas le cas, on pourrait avoir besoin d'installer ce hotfix à partir de M$. http://support.microsoft.com/kb/981506
nous avons fait face à la même erreur et après de longues heures, nous avons réalisé que netsh ne parcourait pas toutes les machines locales pour trouver le certificat identifié par le paramètre" certhash". Par défaut, il recherche le certificat dans le magasin "personnel" et seulement là.
comme notre certificat n'était pas dans le magasin "personnel" mais dans le magasin "Trusted Root Certification Authorities", le problème a été résolu en ajoutant le paramètre "certstorename" dans la commande netsh:
C:\>netsh http add sslcert ipport=0.0.0.0:8732 certstorename=AuthRoot certhash=...
une autre chose à savoir est que copier/coller le hachage de certificat de la fenêtre de propriété du certificat de la console MMC, peut aussi apporter un char amusant au début du hachage. Vous ne le verrez pas parce que ce char est INVISIBLE dans L'encodage UTF-8 que votre éditeur de texte utilise probablement!
Netsh n'aide pas car il continue à échouer avec "le paramètre est incorrect" sans révéler quel paramètre ;)
changer l'encodage en ANSI montre la char, supprimez-le et ça marchera comme un charme
la clé pour moi était d'abandonner en utilisant IE pour faire l'importation qui est ce que je fais/fait normalement.
utiliser mmc.exe, File->Ajouter/Supprimer Snap-in et ajouter "certificats". Gérer pour compte D'ordinateur puis "ordinateur Local".
importer le certificat racine dans les certificats (ordinateur Local)/Autorités de Certification racine de confiance/certificats.
importer le certificat client dans Personal / Certificates et ensuite faire le netsh http ajouter sslcert.
j'ai remarqué ce qui suit dans votre question. Il ne peut pas résoudre le problème d'origine, mais la syntaxe n'est pas correcte.
PS C:\> netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Bad numeric constant: 224.
At line:1 char:104
+ netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={001 <<<< 12233-4455-6677-8899-AABBCCDDEEFF}
+ CategoryInfo : ParserError: (224:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : BadNumericConstant
utilisez ceci à la place (avec appid dans une seule citation ' {}'):
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
en fait, il n'a rien à voir avec rafraîchir. J'ai perdu beaucoup de temps avec le même problème. Si vous faites une nouvelle installation, vous ne rencontrerez pas ce problème, mais un problème se produira si vous essayez de:
1. Import same certificate again
2. You create a new certificate and try to bind it which has same parameters, namely the CN value.
pour vous débarrasser de ce problème, supprimez ce certificat correctement de votre magasin de certificats et de la mémoire cache du serveur IIS, ou (à des fins de développement seulement), créez un nouveau certificat, mais avec une valeur CN différente, la commande fonctionnera.
"Official" ( not self signed) les certificats (par exemple de Thawte) sont importés dans le magasin de certificats: "Trusted Root Certification Authorities".
Si aucun paramètre "certstorename=" n'est passé dans la commande netsh, netsh prend "mon" ce qui représente le magasin "privé".
Pour lier un certificat officiel, vous devez ajouter:
certstorename=Root
à la commande netsh.