ASPNETユーザーアカウントでプライベートキーにアクセスするにはどうすればよいですか?
-
03-07-2019 - |
質問
ASPNETユーザーでプライベートキーのインポートとアクセスに問題があります。 Windowsで秘密キー(.pfxファイル)を手動でインポートすると、キーをエクスポート可能としてマークするオプションが表示されることを知っています。 今、私が知る限り、これは後でその秘密鍵を取得するために必要です。
私の問題は、ASPNETユーザーとしてコードで秘密キーをインポートしていることです。Windows証明書インポートウィザードのように、エクスポート可能としてマークする方法がないようです。 明確にするために、インポートは正常に機能しますが、今インポートした証明書の詳細にアクセスすると、秘密鍵データはありません。
これは、正しいパスワードで.pfxファイルを開いた後、証明書をインポートするために使用しているコードです。
public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
X509Store certStore = new X509Store(name, loc);
StorePermission permission = new StorePermission(PermissionState.Unrestricted);
permission.Flags = StorePermissionFlags.AddToStore;
permission.Assert();
certStore.Open(OpenFlags.ReadWrite);
certStore.Add(cert);
certStore.Close();
}
アクセス許可を変更したり、この秘密キーをインポートしたりする方法はありますか? または、私はこれについてまったく間違った方法で行っていますか?
解決
証明書をインポートするときに、X509KeyStorageFlags.Exportableフラグを設定する必要があると思います。このコードは表示しませんが、次のシグネチャを持つImportメソッドのオーバーロードがあります。
public override void Import(string fileName, string password,
X509KeyStorageFlags keyStorageFlags);
またはこれ:
public override void Import(byte[] rawData, string password,
X509KeyStorageFlags keyStorageFlags);
インポートする前に設定できます。それ以外の場合、すべてが良さそうです!
リチャード
所属していません StackOverflow