2011-11-30 18 views
0

雖然調整Web代理代碼,我發現,如果我跑與UAC(用戶訪問控制)的應用程序代碼中,我得到一個異常爲什麼sslStream.AuthenticateAsServer不需要UAC和替代

這裏是位置在異常被拋出:

sslStream.AuthenticateAsServer(_certificate, false, SslProtocols.Tls | SslProtocols.Ssl3 | SslProtocols.Ssl2, false); 

以下是錯誤我得到(與UAC)

The server mode SSL must use a certificate with the associated private key. 

第一個問題:爲什麼呢?

第二個問題:是否有替代方案?我真的想在UAC中運行這個(請注意,http工作正常)

+0

這是一個複製? http://stackoverflow.com/questions/23044914/c-sharp-ssl-server-mode-must-use-a-certificate-with-the-corresponding-private-ke – Christoph

回答

0

聽起來像您的證書的私鑰可能位於具有受限文件訪問權限的地方。這樣不僅任何用戶都可以讀取您的私鑰。使用有限權限運行服務的目的是什麼?如果密鑰僅用於此服務,您可以考慮刪除其所在文件夾的安全限制,但如果此密鑰適用於您的整個域名,我會猶豫要如此做...

+0

不讓私鑰在一個地方當前腳本可以讀取(在這種情況下,O2平臺腳本文件夾),所以一定有其他的東西 –

0

您是否安裝了證書在相應的證書存儲區中?

從我記得使用證書時,您加載的文件僅用作參考,以在Windows證書存儲區之一中標識服務器證書。如果代理在一個帳戶下運行,但不在另一個帳戶下運行,也許您沒有在其他帳戶的個人證書存儲中安裝證書。