2009-04-22 53 views
41

添加下面的說明:在這個環節中的「如何配置端口使用SSL證書」:http://msdn.microsoft.com/en-us/library/ms733791.aspx,我在命令行中輸入此命令(杜):「參數不正確。」使用netsh的HTTP錯誤的sslcert

> 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。

還有什麼錯誤,我需要解決這個問題嗎?

+0

關於從PowerShell調用外部程序的有用信息「正確的方式」在這裏... http:// edgylogic。com/blog/powershell-and-external-commands-done-right/ – andyb 2014-03-08 21:42:36

+0

我意識到這一切都是因爲我的ORDERING!你必須在`certhash`之前加上'appid`。它愚蠢。 – Alexandru 2015-07-09 15:14:58

+4

對我來說,windows cert cert manager的複製粘貼certhash在前面有一些奇怪的字符 - 確保它只是字母數字,並且沒有奇怪的前導字符。 – 2015-09-24 14:32:23

回答

1

有幾件事我做了,我認爲它得到相同的工作後「該參數是不正確的。」錯誤。

1)重新啓動機器並重新執行。它第一次工作。 2)確保我在c:\並重新啓動後再次發出命令沒有工作

我無法解釋爲什麼,但我認爲可能兩次都有其他錯誤。因爲第三次發生在我身上,

3)我通過我的CA的指紋(而不是頒發的服務器證書),並再次從MMC複製它,它的工作。

發生這種情況後,我再次刪除它(netsh http delete sslcert ipport = 0.0.0.0 :)並使用服務器證書的指紋重複該過程。該死的東西再次工作。

我不知道,只是嘗試通過我做的同樣的事情。也許其中一個會起作用。最後,我懷疑我在證書中輸入了一個虛假空間或角色。

10

望着語法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 
    ^
3

我剛剛開始使用http.sys時遇到了此錯誤。跑完之後:

netsh http add iplisten ipaddress=0.0.0.0 

然後netsh http add sslcert命令開始正常運行。

+0

這是我的問題。 – x0n 2017-04-06 21:35:45

57

在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> 
2

我跑過這個問題,同時尋找問題的解決方案。我終於找到了一個爲我工作的人。

我的certhash參數不完全是20個字節長。我必須在前面用零填充以使其正常工作。

所以,與其

certhash=112233445566778899aabbccddeeff00,我不得不這樣做:

certhash=00000000112233445566778899aabbccddeeff00

希望這會有所幫助。

0

「 - 」並非無關緊要。 如果您的GUID does not看起來完全一樣,你會得到不正確的參數錯誤: {EDE3C891-306C-40FE-BAD4-895B236A1CC8} 與 EDE3C891306C40feBAD4895B236A1CC8 - >錯誤 {EDE3C891306C40feBAD4895B236A1CC8} - >錯誤

也爲Im使用guid作爲IIS的appid,而不是隨機的。

33

此問題的另一個可能的原因是從證書管理器頁面複製隱藏字符。如果您從證書的詳細信息窗口複製指紋,請在開始時檢查隱藏的字符(使用箭頭鍵!)。這是我對「The Parameter is Incorrect」錯誤信息的原因。

4

在我的情況下,問題是我遵循微軟的inscructions,我從SSL窗口複製了指紋。問題是這樣做會在散列開頭複製不可打印的字符。

嘗試將指紋粘貼到記事本中,然後按home和pres刪除兩次(直到指紋的第一個字符被刪除)並重新添加字符。你可以看到字符,如果你複製指紋並將其粘貼到CMD:在PS1文件

thumbprint with "?"

17

PowerShell命令行以及PowerShell腳本會認爲柯利 - 括號{...}是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}' 

以下是有關PowerShell的語法的一些信息與柯利括號:

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

2

先生,你有我的支持:rathe r比ipport =這很容易做,因爲你遵循與ip:端口

此外,請注意{與<或(,這也讓我在過去。

2

由於字符數量的差異,使用序列號而不是指紋作爲certhash參數會導致此錯誤。填充以0將改變錯誤SSL證書添加失敗,錯誤:1312

9
  1. 複製命令到記事本
  2. 保存爲ANSI
  3. 關閉並重新打開文件
  4. 取出假?漢字是從記事本
  5. 複製到命令提示符,然後運行命令
2

當心,如果你有一個DNS名稱爲綁定使用hostnameport而不是ipport

netsh http delete sslcert hostnameport=domainame.com:443 

我必須刪除用於Office 365單一登錄的ADFS代理綁定。

7

從證書\詳細信息\指紋複製證書指紋會預先指定字節值'3f38',當轉換爲ANSI時顯示爲'?'。這個隱藏的價值導致了我的問題。

我把值粘貼到記事本++,選擇'編碼'>'轉換爲ANSI',然後我手動刪除了前綴'?'字符。然後我會有一個清潔指紋值使用。

1

這將從PowerShell的commadline工作:

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

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

重要的細節是逃避每個{}用反引號(`),而不是省略certstorename。否則netsh產生一個錯誤87.

變量只是爲了方便。

0

我必須通過刪除本地主機證書來結束VS和IIS Express之間的關係。我被困住了。該應用程序無法啓動,我無法做的事似乎糾正了這種斷開連接(這是我想讓這個線程開始)。

我終於能夠通過改變非SSL URL(在.NET應用程序的核心launchSettings.json)分配的端口和禁用啓用在項目設置SSL複選框,並採取一個新的開始,並得到了問題。然後,我可以使用以下命令添加新創建的證書:netsh http add sslcert ipport=0.0.0.0:44392 appid={214124cd-d05b-4309-9af9-9caa44b2b74b} certhash=A0ADC1A1002F288CCFA96261F9F352D28C675A90

此外,請注意,appid變量不是您的VS項目AppID的反映(或者至少它不一定是)。這只是一個任意GUID,根據Scott Hanselmann

The AppId doesn't really matter, its just a GUID. This tells HTTP.SYS that we're using that certificate.

這不明顯了我,使對付參數不正確錯誤更加晦澀。

如果您遇到類似問題,祝您好運。我相信你。如果你感到迷茫和孤獨,請平息我。也許我可以在那時記住一些事情! :D

1

我多次面對這個問題,每次遇到不同的原因,我決定寫出對我有用的原因和確切的命令。

這裏有一些原因:從Windows對話框

1複製和粘貼證書指紋添加了一個隱藏的性格你的哈希值。它在文本編輯器中不可見,但您需要刪除該字符才能使其正常工作。

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}' 

這裏是命令行語句:

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

更多命令幫助您避免相關問題:

使用以下命令查看當前註冊證書。您可以從中找到並重復使用certhash或您的appid:

netsh http show sslcert 

如果證書已經註冊了類似的ip和端口,您需要將其刪除。我發現它與localhost,127.0.0.1和0.0.0.0有關。您只需在您的測試環境中註冊0.0.0.0。使用以下命令來消除潛在的損壞的證書:

netsh http delete sslcert ipport=0.0.0.0:20001 
0

這可能是有益的補充,在這個線程我的決心:

我試圖添加具有hostnameport參數的ippport所以我得到這個參數錯誤。

netsh http add sslcert hostnameport="10.0.0.120:443"

相反的:

netsh http add sslcert ipport="10.0.0.120:443"

氰!

相關問題