"参数不正确." 使用netsh http添加sslcert时出错

Der*_*ick 51 ssl-certificate netsh

按照以下链接中的"如何:使用SSL证书配置端口"的说明操作:http://msdn.microsoft.com/en-us/library/ms733791.aspx,我在命令行上输入了此命令(duh) :

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

我的certhash指纹取自证书(本地计算机)>个人>证书文件夹中的证书.

appidGUID生成.

还有什么问题我需要修复才能让它发挥作用?

小智 75

在PowerShell中输入如下内容.首先进入netsh http模式,然后添加sslcert.它对我有用.

>netsh

netsh>http

netsh http>add sslcert ipport=0.0.0.0:13286 appid='{a5455c78-6489-4e13-b395-47fbdee0e7e6}' certhash=<thumprint without space>
Run Code Online (Sandbox Code Playgroud)

  • 如果完全使用PowerShell命令行或ps1脚本,请记住引用curley-braces; 否则PowerShell会感到困惑. (8认同)
  • 我意识到这完全是因为我的订购!你必须在`certhash`之前放置`appid`.它那愚蠢. (3认同)
  • @Alexandru——我不仅要这样做,还要*删除*引号。是的……笨是对的。:P (2认同)
  • @Alexandru 您不必将 appid 放在 certhash 之前 - 这样做可能会无意中为您解决了另一个问题。 (2认同)

Ric*_*ard 41

此问题的另一个可能原因是从证书管理器页面复制隐藏的字符.如果从"证书"中的详细信息窗口复制指纹,请在开始时检查隐藏字符(使用箭头键!).这是我的"参数不正确"错误消息的原因.

  • 你真棒。当有特殊字符时,会有一个奇怪的小勾号。我一开始注意到了这一点,但并没有多想。只是删除了那个特殊字符和成功。谢谢! (2认同)

cod*_*oud 24

ps1文件中的PowerShell命令行和PowerShell脚本会认为curley-braces {...}是PowerShell指令.所以引用他们.否则,正如您所见,PowerShell将会感到困惑.

所以,而不是这(你发现失败):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8} 
Run Code Online (Sandbox Code Playgroud)

这样做(注意单引号):

netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= '{EDE3C891-306C-40fe-BAD4-895B236A1CC8}'
Run Code Online (Sandbox Code Playgroud)

以下是有关使用curley括号的PowerShell语法的一些信息:

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


cmp*_*ken 14

看一下netsh命令的语法,我看到了这个例子:

add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
Run Code Online (Sandbox Code Playgroud)

从它的外观来看,你的问题就在于你正在做的事情

ipport:10.141.146.227:7001
      ^
Run Code Online (Sandbox Code Playgroud)

而不是

ipport=10.141.146.227:7001
      ^
Run Code Online (Sandbox Code Playgroud)


And*_*mer 11

从Certificate\Details\Thumbprint复制证书指纹将在指纹值前加上字节'3f38',当转换为ANSI时,它们显示为'?'.这个隐藏的价值对我来说是个问题.

我将值粘贴到记事本++,选择'编码'>'转换为ANSI',然后我手动删除前置'?' 字符.然后我会有一个干净的指纹值来使用.


tcb*_*tcb 10

  1. 将命令复制到记事本中
  2. 将其另存为ANSI
  3. 关闭并重新打开该文件
  4. 删除虚假?人物
  5. 从记事本复制到命令提示符并运行该命令


moh*_*eri 6

我几次都遇到这个问题,并且每次都有不同的原因,因此我决定写出适合我的原因和确切的命令。

原因如下:

1-从Windows对话框复制和粘贴证书指纹,将隐藏字符添加到哈希中。它在文本编辑器中不可见,但是您需要删除该字符以使其起作用。

2- SSL指纹应该在“个人”->“证书”中可用,以便与本地主机一起使用。

3-应该是'ipport ='而不是'ipport:'

4- SSL证书应具有私钥。如果您使用的是证书管理控制台,请确保它在证书视图上有一个小钥匙图标。

5- GUID应该以完整格式定义:{a10b0420-a21f-45de-a1f8-818b5001145a},并且在powershell中应带有单引号:'{a10b0420-a21f-45de-a1f8-818b5001145a}'因此,PowerShell格式是不同的从命令行。

6- SSL证书应具有完整的字符,且所有填充均为“ 0”且没有任何空格。您可以复制指纹(小心删除特殊的隐藏字符)并删除空格,或者如果证书已经为另一个地址注册,则可以使用“ netsh http show sslcert”获取值。

对我有用的是:

这是在Powershell中为我工作的确切命令:

netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid='{a10b0420-a21f-45de-a1f8-818b5001145a}'
Run Code Online (Sandbox Code Playgroud)

这是命令行语句:

netsh
http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}
Run Code Online (Sandbox Code Playgroud)

更多命令可帮助您避免相关问题:

使用以下命令查看当前的注册证书。您可以从那里找到并重用certhash或您的appid:

netsh http show sslcert
Run Code Online (Sandbox Code Playgroud)

如果证书已经使用相似的IP和端口注册,则需要将其删除。我发现它导致本地主机,127.0.0.1和0.0.0.0出现问题。您只需在测试环境中注册0.0.0.0。使用以下命令删除潜在的损坏的证书:

netsh http delete sslcert ipport=0.0.0.0:20001
Run Code Online (Sandbox Code Playgroud)


Tim*_*ner 5

当我刚刚开始使用http.sys时,我也遇到了这个错误.我跑了之后:

netsh http add iplisten ipaddress=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

然后netsh http add sslcert命令开始表现正常.


Sim*_*imY 5

就我而言,问题是我按照Microsoft的指示从SSL窗口复制了指纹。事实是这样做会在散列的开头复制不可打印的字符。

尝试将指纹粘贴到记事本中,然后按home键,然后按两次pres delete(直到删除指纹中的第一个字符),然后重新添加字符。如果复制指纹并将其粘贴到cmd中,则可以看到字符:

带有“?”的指纹


Der*_*ick 1

在得到相同的“参数不正确”后,我做了一些事情,我认为它可以工作。错误。

  1. 我重新启动机器并再次执行。第一次就成功了。

  2. 我确定我在 C:\ 并在重新启动后再次发出该命令不起作用

    我无法解释为什么,但我想也许这两次都有其他问题。因为我第三次遇到这种情况:

  3. 我检查了CA的指纹(不是颁发的服务器证书)并再次从 MMC 复制它,它起作用了。

发生这种情况后,我再次删除它(netsh http delete sslcert ipport=0.0.0.0:)并使用服务器证书的指纹重复该过程。那该死的东西又起作用了。

我不知道。尝试经历我做过的同样的事情。也许其中之一会起作用。最后,我怀疑我在 certhash 中输入了虚假的空格或字符。