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.
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
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.
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
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:
netsh http add sslcert ipport=0.0.0.0:8732 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid='{00112233-4455-6677-8899-AABBCCDDEEFF}'
J'ai trouvé 4 causes possibles de l'erreur 1312 dans mes liaisons de ports:
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=...
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
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.
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}'
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.
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.