“参数不正确。”使用netsh http添加sslcert错误
按照以下链接中的“如何使用SSL证书configuration端口”中的说明进行操作: http : //msdn.microsoft.com/zh-cn/library/ms733791.aspx ,我在命令行(duh)中input了此命令, :
> netsh http add sslcert ipport:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid={EDE3C891-306C-40fe-BAD4-895B236A1CC8} The parameter is incorrect.
我的certhash
指纹取自证书(本地计算机)>个人>证书文件夹中的证书。
生成了appid
GUID。
还有什么错误,我需要解决这个工作?
在PowerShell中,input如下。 首先进入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>
此问题的另一个可能的原因是从证书pipe理器页面复制隐藏的字符。 如果您从证书的详细信息窗口中复制指纹,请在开始时检查隐藏的字符(使用箭头键!)。 这是我的“参数不正确”错误信息的原因。
PowerShell命令行和ps1文件中的PowerShell脚本会认为curley-braces {…}是PowerShell指令。 所以引用他们。 否则,正如你所见,PowerShell将会感到困惑。
所以而不是这个(你发现失败):
netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= {EDE3C891-306C-40fe-BAD4-895B236A1CC8}
做到这一点(注意单引号):
netsh http add sslcert ipp ort:10.141.146.227:7001 certhash=5d48e604007b867ae8a69260a4ad318d2c05d8ff appid= '{EDE3C891-306C-40fe-BAD4-895B236A1CC8}'
以下是有关使用curley花括号的PowerShell语法的一些信息:
看看netsh命令的语法,我看到了这个例子:
add sslcert ipport=1.1.1.1:443 certhash=0102030405060708090A0B0C0D0E0F1011121314 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
从外表看,你的问题在于你在做什么
ipport:10.141.146.227:7001 ^
而不是
ipport=10.141.146.227:7001 ^
- 将该命令复制到记事本中
- 将其另存为ANSI
- closures并重新打开该文件
- 删除假? 人物
- 从记事本复制到命令提示符并运行该命令
从Certificate \ Details \ Thumbprint中复制证书指纹会预先指定字节值'3f38',当转换为ANSI时显示为'?'。 这个隐藏的价值导致了我的问题。
我把值粘贴到记事本++,select“编码”>“转换为ANSI”,然后我手动删除了前缀'?' 字符。 然后我会有一个干净的指纹值使用。
在我的情况下,问题是我跟随微软的inscructions我从SSL窗口复制拇指指纹。 问题是这样做在散列的开始复制不可打印的字符。
尝试将指纹粘贴到记事本中,然后按回家键并删除两次(直到指纹的第一个字符被删除)并重新添加字符。 如果您复制指纹并将其粘贴到cmd中,您可以看到字符:
当我刚刚开始使用http.sys时,我也遇到了这个错误。 跑完之后
netsh http add iplisten ipaddress=0.0.0.0
那么netsh http add sslcert
命令开始正常运行。
我跑过这个问题,同时寻找解决问题的办法。 我终于find了一个为我工作的人。
我的certhash
参数不完全是20个字节。 我必须在前面用零填充才能使其工作。
所以,而不是
我不得不这样做:
certhash=00000000112233445566778899aabbccddeeff00
。
希望这可以帮助。
主席先生,你有支持:而不是支持=这是很容易做,因为你跟随与IP:端口
另外,要小心{与<或<,(这也使我在过去。
使用序列号代替certhash参数的指纹会因为字符数量的不同而导致此错误。 用0填充将更改错误SSL证书添加失败,错误:1312
小心,如果你有一个DNS名称作为绑定使用主机名称而不是支持
netsh http delete sslcert hostnameport=domainame.com:443
我必须删除Office 365单一login的ADFS代理绑定。
有几件事我做了,我认为它得到相同的工作后“参数是不正确的”。 错误。
1)重新启动机器,并再次做到这一点。 它第一次工作。 2)确保我在c:\并且在重新启动后再次执行命令不起作用
我无法解释为什么,但我想也许这两次,还有其他的错误。 因为第三次发生在我身上
3)我通过我的CA的指纹(而不是颁发的服务器证书),并从MMC复制它,它的工作。
发生这种情况后,我再次删除它(netsh http删除sslcert支持= 0.0.0.0 :),并重复使用服务器证书的指纹进程。 这件事情再次奏效。
我不知道,只是尝试通过我做的同样的事情。 也许其中一个会工作。 最后,我怀疑我是在certhash中input了一个虚假的空间或angular色。
这将从PowerShell commadline工作:
$AppId = [Guid]::NewGuid().Guid $Hash = "209966E2BEDA57E3DB74FD4B1E7266F43EB7B56D" netsh http add sslcert hostname=localhost:8088 certhash=$Hash appid=`{$AppId`} certstorename my
重要的细节是用反引号(`)转义每个{},而不要忽略certstorename。 否则netsh提出了一个错误87。
这些variables只是为了方便。
“ – ”不是无关紧要的。 如果你的guid看起来不像这样,你会得到不正确的参数错误:{EDE3C891-306C-40fe-BAD4-895B236A1CC8} vs. EDE3C891306C40feBAD4895B236A1CC8 – > WRONG {EDE3C891306C40feBAD4895B236A1CC8} – > WRONG
另外我使用guid的IIS的appid,而不是一个随机的。
我必须通过删除本地主机证书来结束VS和IIS Express之间的关系。 我真的被困住了。 该应用程序不会启动,我似乎无法纠正这种断开连接(这是要带我到这个线程开始)。
我终于可以通过更改非SSL URL(.NET Core应用程序中的launchSettings.json
)上的分配端口并禁用项目设置中的“ 启用SSL”checkbox并重新启动来解决问题。 然后,我能够添加我新创build的证书与此命令: netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90
。
另外,请注意, appid
variables不是VS项目AppID的反映(或者至less不是必须的)。 根据Scott Hanselmann的说法,这只是一个随意的GUID:
AppId并不重要,它只是一个GUID。 这告诉HTTP.SYS我们正在使用该证书。
这对我来说并不明显,并且使得处理参数是不太明确的错误的错误。
如果您遇到类似的问题,祝您好运。 我相信你。 如果你感到迷茫和孤独,请平息我。 也许我可以记得一些东西! :d
我多次面对这个问题,每次都有不同的原因,所以我决定写出为我工作的原因和确切的命令。
这是一些原因:
1-从Windows对话框中复制并粘贴证书指纹将隐藏字符添加到您的散列。 它在文本编辑器中不可见,但是您需要删除该字符才能使其正常工作。
在个人 – >证书中应该提供2个SSL指纹来与本地主机一起工作。
3 – 应该是'支持='不'支持:'
4- SSL证书应该有一个私钥。 如果您正在使用证书pipe理控制台,请确保它在证书视图上有一个小钥匙图标。
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}'
这里是命令行语句:
netsh http add sslcert ipport=0.0.0.0:20001 certhash=5304c034548b27c72b5e9c14f0c7bdd13e52d760 appid={a10b0420-a21f-45de-a1f8-818b5001145a}
更多命令帮助您避免相关问题:
使用以下命令查看当前的注册证书。 您可以从这里find并重用certhash或appid:
netsh http show sslcert
如果证书已经注册了类似的IP和端口,则需要将其删除。 我发现它与localhost,127.0.0.1和0.0.0.0的问题。 您只需在您的testing环境中注册0.0.0.0。 使用以下命令删除潜在的损坏的证书:
netsh http delete sslcert ipport=0.0.0.0:20001
在这个线程中添加我的解决scheme可能是有用的:
我试图添加一个ippport的hostnameport参数,所以我得到了这个参数错误。
netsh http add sslcert hostnameport="10.0.0.120:443"
代替 :
netsh http add sslcert ipport="10.0.0.120:443"
Cya!