1

トランスポートセキュリティにSSL証明書を使用するWCFサービスを開発しています。

オンラインでさまざまなチュートリアルとヒントに従って、証明書を生成してインポートしました。証明書は、次のコマンドを使用してインポートされます。

certmgr.exe -add -all -c <filename>.pfx -s -r localMachine my

インポートした証明書をコンソールモードで使用して、WCFサービスを正常に実行しています。「ネットワークサービス」として実行されているWindowsサービスでホストするようにサービスを切り替えたときに問題が発生します。例外は、アプリケーションがインストールされている秘密鍵にアクセスできないという不満です。

そこで、FindPrivateKey.exeを使用して、秘密鍵が実際に現在のユーザーのAppDataフォルダーにインストールされていることを確認しました。

C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-3289377140-263254259-3378496556-1105\d3a0de64e6f0513692d593a77a71d3ac_15824a33-515a-493c-a33f-38a7b852e11a

「ネットワークサービス」ユーザーにこのファイルへのアクセス権を付与しても機能しません。

最後に、証明書を削除し、MMCを使用して再インポートする必要があります。これにより、秘密鍵が次の場所に配置されます。

C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\c3ccd4300462fe2aa7cec7f747fbd075_15824a33-515a-493c-a33f-38a7b852e11a

だから私の質問は、certmgrに現在のユーザーのAppDataの代わりにC:\ ProgramData \に秘密鍵を配置させるにはどうすればよいですか?

4

1 に答える 1

1

ファイルレベルで証明書を操作しようとしないでください。サポートされることが保証されていないのは内部実装です。

あなたを助けることができるMSツールがあります:

Microsoft Windows HTTPサービス(WinHTTP)証明書構成ツール「WinHttpCertCfg.exe」を使用すると、管理者は、インターネットサーバーWebアプリケーションマネージャー(IWAM)アカウントからアクセスできる任意の証明書ストアにクライアント証明書をインストールして構成できます。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v=vs.85).aspx

実行する必要のあるコマンド:

このコマンドは、TESTUSERアカウントの「My」証明書ストアにある「MyCertificate」証明書の秘密鍵へのアクセスを許可します。

winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER

次のリンクを使用してツールをインストールします。

http://www.microsoft.com/en-us/download/details.aspx?id=19801

于 2012-06-22T14:55:52.503 に答える