Windows 環境の .NET では、.pfx/.p12 に秘密キーが含まれている場合、次の方法で証明書ストアにプログラムでインストールできます (ここで、rawData は完全な .pfx/.p12 を含むバイト配列であり、両方とも公開鍵と秘密鍵、およびパスワードは .pfx/.p12 へのパスワードです):
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
X509Certificate2 certificate = new X509Certificate2(rawData, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();
Linux環境のMonoでまったく同じことをしようとしています。Windows で動作する上記のコードは、証明書の公開鍵のみを Linux にインストールし、秘密鍵はインストールしません。Mono の certmgr ユーティリティを使用して .p12 の秘密鍵を手動でインストールできましたが、プログラムによる解決策を探しています。
ありがとう!