我正在使用HttpListener
來創建非常基本的Web服務器。我已將它設置爲使用SSL使用httpcfg工具綁定到適當的端口和證書。這似乎工作正常。我現在想使用客戶端證書認證。因此,我在HttpListenerRequest
對象上添加了對GetClientCertificate
的呼叫,但總是會返回null
。我的測試客戶端很簡單:HttpListenerRequest未返回客戶端證書
HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create("https://127.0.0.1:8080/ssltest/");
webReq.ClientCertificates.Add(new X509Certificate2("ssltest.pfx", "ssltest"));
webReq.GetResponse();
我注意到httpcfg工具有一個標誌,表示如果客戶端證書應通過談判,所以我嘗試指定標誌(-f 2
),但我仍然沒有得到的客戶端證書。我也遇到了this Microsoft support issue這似乎很相關,但我使用最新的.NET 2.0服務包,我也嘗試了httpcfg標誌,兩者都應該避免這個問題。
我假設我在這裏丟失了一些明顯的東西。有任何想法嗎?
編輯:我剛剛發現this question這似乎很相關(甚至可能是重複?)。不幸的是,這個問題也沒有被接受的答案。建議的答案對我已經嘗試過的東西(具有相應標誌的httpcfg工具)提出建議。
您確定證書已正確加載嗎?我會將cert對象的一些調試屬性寫入控制檯以確保。 –
夠公平的。剛剛嘗試過,並且在將它添加到ClientCertificates集合之前,X509Certificate2對象有效。 – Dennis
我不確定這是否相關,但我期望看到一個CER文件,而不是PFX文件那裏... PFX文件也將包含私鑰,您不應該需要SSL請求。不過,我希望這個工作。也許嘗試導出CER文件的公鑰? –