フレームワークタイプでこれを行う方法はありません。 BouncyCastleや他のライブラリでは可能かもしれません。
X509Certificate2 mergedCert = cert.CopyWithPrivateKey(rsaPrivateKey);
X509Certificate2 mergedCert = cert.CopyWithPrivateKey(dsaPrivateKey);
X509Certificate2 mergedCert = cert.CopyWithPrivateKey(ecdsaPrivateKey);
しかし、それはnetcoreapp20(ないnetstandard20)のために特別にコンパイルする必要があります。
.NETコア2.0は、拡張メソッドを介して(新しいX509Certificate2オブジェクトに)一緒に証明書とキーオブジェクトをマージする機能を追加しました。唯一の事前解析された構造(RSAParameters
、DSAParameters
、ECParameters
)から、
フレームワークタイプも(CngKey.Import
を除いて、それはWindows上でのみ動作します)バイナリ表現からキーオブジェクトをロードする方法がありません。 。
Linuxでこの目標を達成する最も簡単な方法は、System.Process
を使用して、openssl pkcs12 -export -out tmp.pfx -in tmp.cer -inkey tmp.key -password pass:""
と同様の呼び出しを生成することです(BouncyCastleが手助けできない場合)。 Windowsでは
あなたは多分その後、変異した証明書にcert.Export
を呼び出すためにCngKey.Importと(CERT_NCRYPT_KEY_HANDLE_PROP_ID(78)のための)P /呼び出しCertSetCertificateContextPropertyを使用することができます。
PFX/PKCS#12は、証明書とキーを連結する以外にはありません。 – jww
@jww本当ですが、(証明書を)PFXに送ると、関連する鍵を取得することができます – bartonjs
@bartonjs BouncyCastleでそれを行う方法の例を教えてください。 – Maxim