1

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();
}

アクセス許可やこの秘密鍵のインポート方法をいじっていませんか? それとも、私はこれを完全に間違った方法で行っていますか?

4

1 に答える 1

1

証明書をインポートするときに X509KeyStorageFlags.Exportable フラグを設定する必要があると思います。そのコードは示していませんが、次のシグネチャを持つ Import メソッドのオーバーロードがあります。

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

またはこれ:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

これにより、インポートする前に設定できます。そうでなければ、すべてが良さそうです!

リチャード

于 2008-10-03T15:17:01.253 に答える