4

OpenSSL で生成された証明書を使用して、C# で TLS 暗号化の TCP 接続を作成しようとしています。

ここに示す SslStream サンプル コードは、Windows の makecert.exe で作成された証明書を使用して動作するようで、.cer ファイルとして出力されます。.pem ファイルである OpenSSL で作成された証明書では機能せず、「サーバー モード SSL は、関連付けられた秘密キーを持つ証明書を使用する必要があります。」

発行者、サブジェクト、およびその他のプロパティを確認できるため、両方の証明書ファイルが X509Certificate オブジェクトに正常に解析されており、「HasPrivateKey」プロパティが false であることに注意してください

これは、(OpenSSL) 証明書と秘密鍵を 1 つの PKCS12 パッケージに組み合わせる必要があることを示していますそれでも、PKCS12 パッケージはファイル形式 .pfx です。OpenSSL 証明書を秘密鍵と組み合わせて pfx にする必要があるのはなぜですか。しかし、makecert で生成された .cer ファイルは pfx である必要はありません (PKCS12 ではありません)。 ?

また、MakeCert 証明書にも秘密鍵がない場合、OpenSSL 証明書の違いは何ですか? 別の言い方をすれば、なぜ MakeCert 証明書は OpenSSL 証明書のように秘密鍵を必要としないように見えるのでしょうか?

4

1 に答える 1