我正在嘗試在C#中使用OpenSSL生成的證書在TLS加密上創建TCP連接。MakeCert和OpenSSL之間的區別關於C#SslStream
給出here的SslStream示例代碼似乎可以使用Windows makecert.exe創建的證書工作,該證書以.cer文件形式出現。它不適用於通過OpenSSL創建的證書,該證書是一個.pem文件,引發了一些注意:「服務器模式SSL必須使用帶有關聯私鑰的證書。」
兩個證書文件被成功解析爲x509證書的對象,因爲我可以看到他們的發行方和主題等性能,並注意「HasPrivateKey」屬性設置爲false「專用密鑰」屬性爲他們兩人的。
我發現this其中說你需要將(OpenSSL)證書和私鑰組合成一個PKCS12包。然而,PKCS12包是文件格式.pfx - 爲什麼OpenSSL證書必須與私鑰組合成pfx,但makecert生成的.cer文件不需要是pfx(而不是PKCS12) ?
此外,當MakeCert證書還沒有私鑰時,首先使OpenSSL證書有所不同,從而導致丟失該私鑰的異常?或者換句話說,爲什麼MakeCert證書似乎不需要私鑰,比如OpenSSL證書?
更新:當前代碼項目文章中的代碼不支持舊的過時Windows Server 2003.請記住,如果它影響到您。 – user1169420 2015-06-02 17:50:48