トランスポートセキュリティに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 \に秘密鍵を配置させるにはどうすればよいですか?