web-dev-qa-db-fra.com

À l'aide de netsh, lier un certificat SSL à un numéro de port échoue

J'ai suivi les instructions dans SSL avec le service WCF auto-hébergé. Lorsque j'essaie de lier le certificat sous Windows 7 à l'aide de netsh comme décrit dans Comment: configurer un port avec un certificat SSL. , il échoue comme suit.

Sous 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.
31
Win Myo Htet

La source de l'erreur réside dans le fait que j'ai extrait ThumbPrint directement du fichier de certificat de signroot.cert, créé à partir de la première commande makecert nécessaire à la création d '"Autorités de certification racines de confiance", qui sert à nouveau à créer ( ) le certificat de confiance auto-sigende dans la deuxième commande makecert. 

La deuxième commande makecert installe également les certificats créés dans le nœud "Certificats (ordinateur local) -> Personnel -> Certificats". Il faut actualiser le MMC actuellement ouvert pour voir le certificat "localhost" et ThumbPrint doit être extrait de ce certificat mais pas de signroot.cert. 

Si ce n'est toujours pas le cas, vous devrez peut-être installer ce correctif à partir de M $ . http://support.Microsoft.com/kb/981506

ref: http://social.technet.Microsoft.com/Forums/en/winservergen/thread/68452008-a89b-40ba-9927-472efcfafc99 }

12
Win Myo Htet

Je me suis toujours battu pour que mon IIS Express utilise correctement le protocole SSL. Il s'avère que mon certificat se trouvait dans Autorités de certification racines de confiance store au lieu de Certificats personnels store. C'est ce qui a fonctionné pour moi:

  1. Assurez-vous que votre certificat est dans "Certificats (ordinateur local)/Personnel/Certificats"
  2. netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
  3. Certificat SSL ajouté avec succès
  4. Utilisez MMC et faites glisser le certificat où vous voulez.
28
TeamBrett

J'ai trouvé 4 causes possibles de l'erreur 1312 dans mes liaisons de ports:

  • Le certificat SSL est corrompu - vous devez supprimer du magasin de certificats et ajouter de nouveau .
  • Il manque une clé privée au certificat SSL - vous devez supprimer du magasin de certificats et rajouter le certificat public/privé complet, ou joindre la clé privée à votre certificat .
  • Si vous installez une version antérieure à SP1 de 2012R2, vous aurez peut-être besoin de la base de connaissances 981506 .
  • Vous avez peut-être ajouté le certificat SSL à votre magasin d'utilisateurs et non au magasin de machines local - supprimez-le du magasin d'utilisateurs et ajoutez-le au magasin de machines .
15
Mark

Nous avons fait face à la même erreur et après de longues heures, nous avons réalisé que netsh ne parcourait pas tous les magasins de l'ordinateur local pour trouver le certificat identifié par le paramètre "certhash". Par défaut, il recherche le certificat dans le magasin "personnel" et uniquement à cet emplacement. 

Notre certificat ne se trouvant pas dans le magasin "personnel", mais dans le magasin "Autorités de certification racines de confiance", 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=...  
7
Graffito

Une autre chose à savoir est que copier/coller le hachage du certificat à partir de la fenêtre de propriété du certificat de la console MMC peut également apporter un caractère amusant au début du hachage. Vous ne le verrez pas, car ce caractère est INVISIBLE dans le codage UTF-8 et que votre éditeur de texte l'utilisera probablement! 

Netsh n’aide pas car il échoue continuellement avec "le paramètre est incorrect" sans indiquer quel paramètre;)

Changer l'encodage en ANSI affiche le caractère, supprimez-le et ça fonctionnera comme un charme

3
Arjan

La clé pour moi était d’abandonner avec IE pour importer ce que j’ai fait/fait normalement.

Utilisez mmc.exe, Fichier-> Ajouter/Supprimer un composant logiciel enfichable et ajoutez "Certificats". Gérer pour un compte d'ordinateur, puis "ordinateur local".

Importez le certificat racine dans Certificats (ordinateur local)/Autorités de certification racines de confiance/Certificats.

Importez le certificat client dans Personal/Certificates, puis effectuez l’ajout de netsh http sslcert.

2
camster

J'ai remarqué ce qui suit dans votre question. Cela ne résoudra peut-être pas le problème initial, 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 plutôt ceci (avec appid dans un guillemet simple '{}'):

netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
1
spowser

En réalité, cela n'a rien à voir avec l'actualisation. J'ai perdu tellement de temps avec le même problème. Si vous effectuez une nouvelle installation, vous ne rencontrerez pas ce problème, mais vous rencontrerez un problème si vous essayez:

 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 résoudre ce problème, supprimez correctement ce certificat de votre magasin de certificats et du cache du serveur IIS ou créez un nouveau certificat (à des fins de développement uniquement), mais avec une valeur CN différente, la commande fonctionnera.

1
Johnydep

Les certificats "officiels" (non auto-signés) (par exemple de Thawte) sont importés dans le magasin de certificats: "Autorités de certification racines de confiance".
Si aucun paramètre "certstorename =" n'est passé dans la commande netsh, netsh prend "MY" ce qui représente le magasin "Private".
Pour lier un certificat officiel, vous devez ajouter:

certstorename=Root

à la commande netsh.

Information complète

0
FredyWenger