2011-06-03 91 views
3

我有一個我想使用SSL訪問的WCF服務。我在我的開發人員機器上,所以我正在考慮自行託管該服務。我一直在關注Configuring HTTP and HTTPS使用SSL和WCF進行自託管 - 無法將證書綁定到端口

我創建了一個自簽名證書,我將其添加到受信任根證書頒發機構。我創建了另外兩個由第一個簽名的證書,一個用於客戶端,另一個用於服務器。我跟着Using makecert to create certificates for development

我無法超越SSL證書配置步驟。當我的證書綁定使用netsh它拋出一個SSL錯誤的端口號:

Certificate add failed, Error: 1312 A specified logon session does not exist. It may already have been terminated.

是否證書需要爲此一些特殊領域或其他一些東西的工作?

CA證書:

makecert -n "CN=TestCA" -cy authority -a sha1 -sv "TestCA.pvk" -r "TEST_CA.cer" 

服務證書:

makecert -n "CN=rneapp.com" -ic "TEST_CA.cer" -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneapp.com.pvk" "rneapp.com.cer" 

客戶端證書:

makecert -n "CN=rneClient" -ic "TEST_CA.cer" -iv "TestCA.pvk" -a sha1 -sky exchange -pe -sv "rneClient.pvk" "rneClient.cer" 

我使用這個命令將證書到端口綁定:

netsh http add sslcert ipport=0.0.0.0:8465 certhash=a853f3b5b48b8a506bdc4212ba2726a3bfea2bb6 appid={2E53B9B0-17AE-4EBC-A1AE-43D53A6FD07D} clientcertnegotiation=enable 
+0

你是如何確定最後命令的appid的? – Paul 2011-07-18 02:15:17

+0

我爲appid生成了一個GUID。 http://stackoverflow.com/questions/537173/what-appid-should-i-use-with-netsh-exe – Megacan 2011-07-27 15:54:01

+0

你應該能夠從AssemblyInfo.cs/vb文件獲得appid – rotard 2012-02-03 22:05:00

回答

0

這似乎是一個已知問題。 Check out this Microsoft KB article

您也可能會錯誤地設置證書。 Check out this MSDN forum post對於另一個人是如何犯類似錯誤,並得到1312錯誤,只是分心他的真實問題,這是他的證書配置。

+0

該修補程序僅適用於Windows 7和Windows Server 2008,我使用的是Windows Vista。 :\ – Megacan 2011-06-03 14:30:05

+0

增加了一些關於可能錯誤地設置證書的更多細節。如果不是鏈接到您使用的文章,而是發佈了用於生成密鑰的確切makecert選項,那麼我們可以確保您實際選擇了正確的選項,這樣做會更有幫助。 – 2011-06-03 15:20:08

+0

你說得對,對不起。發佈我用來生成證書的確切命令。 – Megacan 2011-06-03 15:48:20

5

當我遇到同樣的問題時,將證書從當前用戶移動到本地計算機存儲幫助,因此請嘗試檢查您的證書存儲。

內置幫助netsh http add sslcert也對於certstorename選項提到了這一點:

 certstorename   - Store name for the certificate. Defaults 
            to MY. Certificate must be stored in the 
            local machine context. 
+0

+1,這工作完美。我從代碼存儲證書,只需將新的X509Store(StoreName.My)更改爲新的X509Store(StoreName.My,StoreLocation.LocalMachine); – Despertar 2012-09-22 21:04:53

1

我有完全的Windows 7同樣的問題和Windows Server 2008 R2,但對我來說這是工作,我第一次將證書與端口綁定。但是,如果我刪除綁定(netsh.exe http刪除sslcert支持= 0.0.0.0:9101)並再次綁定相同的證書,它將失敗。如果我嘗試另一個端口,它會失敗。如果我創建一個全新的證書,那麼我可以再次綁定。但是再次刪除/綁定將會失敗。

我遵循相同的規則,因爲這問題: Can't register a C# generated selfsigned SSL certificate with netsh (error 1312)

我也嘗試安裝KB981506 http://support.microsoft.com/kb/981506但無法安裝「更新並不適用於您的計算機」。也許我已經有了。

我有一種感覺,當綁定被刪除時,東西不會以正確的方式被刪除。當我嘗試再次綁定時,ProcessMonitor不會顯示任何奇怪的東西。

0

今天我有類似的問題,這是我如何解決它。當我在我的本地計算機/我的mmc.exe中安裝了證書時,我發現我的證書沒有帶密鑰的圖標。

所以,當我結合* .CER和* .pvk文件* .PFX有:

pvk2pfx -pvk "private_key.pvk" -spc "public.cert" -pfx "test.pfx" 

然後用MMC.EXE導入* .pfx文件。

再下命令將沒有任何錯誤執行:

netsh http add sslcert... 
netsh http delete sslcert... 

我已經張貼了這個答案類似的堆棧溢出的問題,Can't register a C# generated selfsigned SSL certificate with netsh (error 1312)

相關問題