ASPNETユーザーアカウントでプライベートキーにアクセスするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/167252

  •  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);

インポートする前に設定できます。それ以外の場合、すべてが良さそうです!

リチャード

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top