2011-09-15 18 views
5

我使用標準的SSLStream在C#中實現了一個SSL服務器。如何在SSLStream的AuthenticateAsServer()中提供證書鏈?

到目前爲止一切都很好,但 - AuthenticateAsServer只接受單個證書作爲參數,而我必須提供完整的鏈(其中3個)。

我已經構建了帶有所有證書的PKCS12結構(在Mono.Security的幫助下),然後調用new X509Certificate2(pkcs12.GetBytes()),但是,只有一個提交給客戶端。

所以,問題是 - 如何做到這一點?

謝謝! PS:我需要一個可移植的解決方案,它可以在Windows上的Mono和.NET中使用。

回答

0

您的設置是正確的。網絡服務器使用只有一個證書與SslStream(或其他任何東西)。

該證書可能缺少一些信息:您的服務器證書的Authority Information Access擴展名應指向將下載中間證書的URI。

此信息丟失?

+0

嗯,實際上,SslStream能夠發送證書鏈(必須 - 這是文檔說的,它可以在Microsoft.Net中完成)。其次,Mono中存在一個可以防止這種情況的錯誤(顯然)。第三,不是所有的SSL客戶端都支持所有的證書擴展,不幸的是... – aldem

相關問題