.Net での双方向 SSL 構成に関する問題に直面しています。どういうわけか、コンストラクターで .cer ファイルとパスワードを使用して X509Certificate2 オブジェクトを作成すると、パスワードが無視されます (間違ったパスワードを指定しても機能しました - 応答が正常に返されました)。一方、.p12 ファイルを使用すると、動作は期待どおりです (パスワードが間違っていると、結果が失敗します)。
何か案は?
ありがとう。
.Net での双方向 SSL 構成に関する問題に直面しています。どういうわけか、コンストラクターで .cer ファイルとパスワードを使用して X509Certificate2 オブジェクトを作成すると、パスワードが無視されます (間違ったパスワードを指定しても機能しました - 応答が正常に返されました)。一方、.p12 ファイルを使用すると、動作は期待どおりです (パスワードが間違っていると、結果が失敗します)。
何か案は?
ありがとう。
.cer ファイルには、暗号化されていない形式の X509 証明書のみが含まれています (これは一般的なケースです)。その場合、証明書をデコードするためにパスワードは必要ありません。X509Certificate2 コンストラクターは、Byte[] パラメーターのエンコード形式を判別し、必要のない場合はパスワード パラメーターを無視しようとしていると思います。そして、作成された後PrivateKey
、オブジェクトのプロパティはnull
.
.cer ファイルをロードするときは、Byte[] パラメータを 1 つだけ取るコンストラクタを使用する必要があります。そのコンストラクターのドキュメントでは、サポートされているデータ形式が明確に指定されています。
このコンストラクターは、バイト配列からの証明書情報を使用して、新しい X509Certificate2 オブジェクトを作成します。バイト配列は、バイナリ (DER) エンコードまたは Base64 エンコードの X.509 データにすることができます。バイト配列は、PKCS7 (Authenticode) 署名付きファイルにすることもできます。オブジェクトの作成には署名者証明書が使用されます。
PKCS#12 形式(.p12 または .pfx ファイル) は、証明書と秘密鍵のコンテナー形式です。その場合、暗号化された秘密鍵を復号化するにはパスワードが必要です。実際、PKCS#12 ファイルでの動作は、X509Certificate2 コンストラクターのドキュメントで指定されています。
このコンストラクターは、証明書の秘密キーを含む PKCS12 (PFX) ファイルで使用されます。正しいパスワードを使用してこのコンストラクターを呼び出すと、秘密キーが復号化され、キー コンテナーに保存されます。