C#アセンブリ(ターゲット.NET 4.0
)で、(プログラムで)自己署名証明書を生成し、他の証明書を生成するルートCAとして機能させようとしています。証明書はWindows証明書ストアに保存する必要はなく、ファイルとしてエクスポートします。CngKey.Createで要求された操作がサポートされていません
this question(特に、@dthorpe's answer)を読んで、私はCLR Securityを試してみることにしました。これらの行のいずれかが例外を発生させる
var key = CngKey.Create(CngAlgorithm.Sha1); //same with Sha256, Sha512 and MD5
//or
var key = CngKey.Create(CngAlgorithm.Sha1, null, new CngKeyCreationParameters()
{
ExportPolicy = CngExportPolicies.AllowExport,
KeyUsage = CngKeyUsages.AllUsages,
KeyCreationOptions = CngKeyCreationOptions.MachineKey,
});
:
CLR Security
ライブラリは自己署名証明書を生成するためにCngKey classに拡張メソッドを置くが、私はCngKey
のインスタンスを作成することに成功しませんでした
System.Security.Cryptography.CryptographicExceptionは未処理であった
HRESULT = -2146893783
メッセージ=要求された操作はサポートされていません。 SOおよびインターネットを介して検索
Source=System.Core
StackTrace:
at System.Security.Cryptography.NCryptNative.CreatePersistedKey(SafeNCryptProviderHandle provider, String algorithm, String name, CngKeyCreationOptions options)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm, String keyName, CngKeyCreationParameters creationParameters)
at System.Security.Cryptography.CngKey.Create(CngAlgorithm algorithm)
at Tests.Program.Main(String[] args) at Program.cs:line 51
、私は次のことをチェックしました:
- 私はWindows 7のボックス(それがMSDNごとにRPCをサポートしています)
- しようとしましたが実行していますよWindows Server 2012のボックスで同じエラーが発生する
- プロセスは管理者として実行されているため(とにかくすべての証明書ストレージにアクセスできるように)
- Th eサービス
CNG Key Isolation
とRemote Procedure Call (RPC)
が実行されています
助けていただければ幸いです。
、確かに、私の問題でした。ありがとうございました。リンクしたCNGキーストアプロバイダのページには、「MicrosoftがWindows VistaおよびWindows Server 2008で始まる次のKSPをインストールします。ベンダーは、他のプロバイダを作成してインストールできます。 – Dinei