web-dev-qa-db-fra.com

"Le paramètre est incorrect." erreur lors de l'utilisation de netsh http add sslcert

En suivant les instructions sur "Comment: configurer un port avec un certificat SSL" dans ce lien: http://msdn.Microsoft.com/en-us/library/ms733791.aspx , j'ai saisi ce commande sur la ligne de commande (duh):

> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8}
The parameter is incorrect.

Mon empreinte certhash a été extraite du certificat dans le dossier Certificats (ordinateur local)> Personnel> Certificats.

appid GUID a été généré.

Qu'est-ce qui ne va pas d'autre que je dois réparer pour que cela fonctionne?

50
Derrick

Dans PowerShell, tapez simplement comme suit. passez d'abord en mode http netsh, puis ajoutez sslcert. Ça a marché pour moi.

>netsh

netsh>http

netsh http>add sslcert ipport=0.0.0.0:13286 appid='{a5455c78-6489-4e13-b395-47fbdee0e7e6}' certhash=<thumprint without space>
72
Abdul Hakim

Une autre cause possible de ce problème est la copie de caractères masqués à partir de la page Gestionnaire de certificats. Si vous copiez l'empreinte numérique à partir de la fenêtre de détails dans les certificats, recherchez un caractère caché au début (utilisez vos touches fléchées!). Ce fut la cause pour moi du message d'erreur "Le paramètre est incorrect".

39
Richard

La ligne de commande PowerShell et les scripts PowerShell dans les fichiers ps1 penseront que les accolades curley {...} sont des directives PowerShell. Alors, citez-les. Sinon, comme vous l'avez vu, PowerShell sera confus.

Donc, plutôt que cela (que vous avez trouvé échoue):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8} 

Faites ceci (notez les guillemets simples):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= '{EDE3C891-306C-40fe-BAD4-895B236A1CC8}'

Voici quelques informations sur la syntaxe PowerShell avec des accolades curley:

http://danv74.wordpress.com/2012/07/12/powershell-and-the-hidden-art-of-curly-braces-and-other-braces/

24
codingoutloud

En regardant la syntaxe de la commande netsh, j'ai vu cet exemple:

add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}

À première vue, votre problème est que vous faites

ipport:10.141.146.227:7001
      ^

par opposition à

ipport=10.141.146.227:7001
      ^
13
cmptrgeekken

La copie de l'empreinte numérique du certificat à partir du certificat\Détails\Empreinte numérique ajouterait la valeur de l'empreinte numérique aux octets '3f38' qui, une fois convertis en ANSI, étaient représentés par un '?'. Cette valeur cachée a causé le problème pour moi.

J'ai collé la valeur dans notepad ++, choisi 'Encoding'> 'Convert to ANSI', puis j'ai supprimé manuellement le préfixe '?' personnages. J'aurais alors une valeur clean thumbprint à utiliser.

11
Andreas Presthammer
  1. Copiez la commande dans le bloc-notes
  2. Enregistrez-le sous ANSI
  3. Fermez et rouvrez le fichier
  4. Supprimer le faux? personnages
  5. Copiez du bloc-notes vers l'invite de commandes et exécutez la commande
10
tcb

Dans mon cas, le problème est que, en suivant les inscriptions Microsoft, j'ai copié l'empreinte numérique de la fenêtre SSL. le fait est que cela copie les caractères non imprimables au début du hachage.

Essayez de coller l'empreinte numérique dans le bloc-notes, puis appuyez deux fois sur home et pres delete (jusqu'à ce que le premier caractère de l'empreinte numérique soit supprimé) et ajoutez à nouveau le caractère. Vous pouvez voir le caractère si vous copiez l'empreinte numérique et la collez dans cmd:

thumbprint with "?"

5
SimSimY

J'obtenais également cette erreur lorsque je commençais à peine avec http.sys. Après avoir couru:

netsh http add iplisten ipaddress=0.0.0.0

puis le netsh http add sslcert les commandes ont commencé à se comporter correctement.

5
Tim Danner

J'ai rencontré ce problème plusieurs fois et chaque fois qu'il avait une cause différente, j'ai donc décidé d'écrire les causes et la commande exacte qui fonctionnaient pour moi.

Voici quelques causes:

1- Copier et coller l'empreinte numérique du certificat à partir de la boîte de dialogue Windows ajoute un caractère caché à votre hachage. Il n'est pas visible dans les éditeurs de texte mais vous devez supprimer le caractère pour le faire fonctionner.

2- L'empreinte SSL doit être disponible dans Personnel -> Certificats pour fonctionner avec localhost.

3-Il doit être 'ipport =' et non 'ipport:'

4- Le certificat SSL doit avoir une clé privée. Si vous utilisez la console de gestion des certificats, assurez-vous qu'elle comporte une petite icône de clé dans la vue du certificat.

5- GUID doit être défini au format complet: {a10b0420-a21f-45de-a1f8-818b5001145a}, et il doit avoir une citation dans powershell: '{a10b0420-a21f-45de-a1f8- 818b5001145a} 'Ainsi, le format PowerShell est différent de la ligne de commande.

6- Le certificat SSL doit avoir des caractères complets avec tous les "0" et sans espace. Vous pouvez copier l'empreinte numérique (veillez à supprimer les caractères cachés spéciaux) et supprimer les espaces, ou utilisez 'netsh http show sslcert' pour obtenir la valeur si le certificat est déjà enregistré pour une autre adresse.

Ce qui a fonctionné pour moi:

Voici la commande exacte qui a fonctionné pour moi dans PowerShell:

netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid='{a10b0420-a21f-45de-a1f8-818b5001145a}'

Et voici l'instruction en ligne de commande:

netsh
http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}

Plus de commandes pour vous aider à éviter les problèmes liés:

Utilisez la commande suivante pour voir le certificat enregistré actuel. Vous pouvez trouver et réutiliser certhash ou votre appid à partir de là:

netsh http show sslcert

Si le certificat est déjà enregistré avec une adresse IP et un port similaires, vous devez le supprimer. J'ai trouvé qu'il causait un problème avec localhost, 127.0.0.1 et 0.0.0.0. Vous devez avoir seulement 0.0.0.0 enregistré dans votre environnement de test. Utilisez la commande suivante pour supprimer les certificats potentiellement corrompus:

netsh http delete sslcert ipport=0.0.0.0:20001
5
mohghaderi

L'utilisation du numéro de série au lieu de l'empreinte numérique pour le paramètre certhash provoquera cette erreur en raison de la différence de quantité de caractères. Le remplissage avec 0s changera l'erreur en échec de l'ajout du certificat SSL, erreur: 1312

3
Daniel N

Monsieur, vous avez ipport: plutôt que ipport = ce qui est facile à faire puisque vous suivez cela avec ip: port

Faites également attention aux {versus <ou (, qui m'ont également attiré dans le passé.

2
GMLewisII

Attention, si vous avez un nom DNS comme utilisation de liaison hostnameport au lieu de ipport

netsh http delete sslcert hostnameport=domainame.com:443

J'ai dû supprimer les liaisons de proxy ADFS pour l'authentification unique Office 365.

2
joelschmid

J'ai rencontré cette question en cherchant une solution au problème. J'ai finalement trouvé celui qui fonctionnait pour moi.

Mon paramètre certhash n'était pas entièrement long de 20 octets. J'ai dû le remplir de zéros devant pour le faire fonctionner.

Donc, au lieu de

certhash=112233445566778899aabbccddeeff00, Je devais faire ceci:

certhash=00000000112233445566778899aabbccddeeff00.

J'espère que cela t'aides.

2
Christopher Broome

il y a quelques choses que j'ai faites qui, selon moi, l'ont fait fonctionner après avoir obtenu le même "Le paramètre est incorrect". Erreur.

1) redémarré la machine et recommencé. Ça a fonctionné la première fois. 2) je me suis assuré que j'étais dans c:\et j'ai mis la commande à nouveau après le redémarrage n'a pas fonctionné

je ne pouvais pas expliquer pourquoi mais je pense que peut-être les deux fois, il y avait autre chose de mal. parce que la troisième fois que cela m'est arrivé,

3) J'ai parcouru l'empreinte numérique de mon autorité de certification (pas le certificat de serveur émis) et l'ai copié à nouveau à partir du MMC et cela a fonctionné.

après cela, je l'ai à nouveau supprimé (netsh http delete sslcert ipport = 0.0.0.0 :) et j'ai répété le processus en utilisant l'empreinte numérique du certificat du serveur. La chose sacrée a de nouveau fonctionné.

Je ne sais pas, essayez de passer par la même chose que moi. peut-être que l'un d'eux fonctionnerait. En fin de compte, je soupçonne que je suis entré dans un faux espace ou personnage dans le certhash.

1
Derrick

Cela fonctionnera à partir de la ligne de commande PowerShell:

$AppId = [Guid]::NewGuid().Guid
$Hash = "209966E2BEDA57E3DB74FD4B1E7266F43EB7B56D"

netsh http add sslcert hostname=localhost:8088 certhash=$Hash appid=`{$AppId`} certstorename my

Les détails importants sont d'échapper à chaque {} avec un backtick (`) et de ne pas omettre certstorename. Sinon, netsh déclenche une erreur 87.

Les variables sont juste pour des raisons de commodité.

1
PeterXX

Les "-" ne sont PAS sans importance. Si votre guid ne ressemble pas exactement à ceci, vous obtiendrez l'erreur de paramètre incorrecte: {EDE3C891-306C-40fe-BAD4-895B236A1CC8} vs EDE3C891306C40feBAD4895B236A1CC8 -> FAUX {EDE3C891306C40feBAD4895B236A1CC8} -

Aussi, j'utilise le guid pour l'appid de l'IIS, pas un hasard.

0

Il pourrait être utile d'ajouter ma résolution dans ce fil:

J'essayais d'ajouter un ippport avec le paramètre hostnameport donc j'ai eu cette erreur de paramètre.

netsh http add sslcert hostnameport="10.0.0.120:443"

Au lieu de :

netsh http add sslcert ipport="10.0.0.120:443"

Cya!

0
Nicolas Leucci

J'ai dû finir par altérer la relation entre VS et IIS Express en supprimant le certificat localhost. J'étais vraiment bloqué. L'application ne démarre pas et rien que je puisse faire ne semble corriger cette déconnexion ( ce qui m'a amené à ce fil pour commencer).

J'ai finalement réussi à surmonter le problème en modifiant le port attribué sur l'URL non SSL (launchSettings.json dans les applications .NET Core) et en désactivant la case Activer SSL dans les paramètres du projet et prendre un nouveau départ. J'ai ensuite pu ajouter mon certificat nouvellement créé avec cette commande: netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90.

Notez également que la variable appid n'est pas un reflet de votre projet VS AppID (ou du moins il ne doit pas l'être). C'est juste un GUID arbitraire, selon Scott Hanselmann :

L'AppId n'a pas vraiment d'importance, c'est juste un GUID. Cela indique à HTTP.SYS que nous utilisons ce certificat.

Ce n'était pas évident pour moi et le fait de traiter le paramètre est une erreur incorrecte beaucoup plus obscure.

Si vous rencontrez des problèmes similaires, bonne chance. Je crois en vous. Ping moi si tu te sens perdu et seul. Peut-être que je pourrai me souvenir de quelque chose d'ici là! :RÉ

0
Vinney Kelly