アイデンティティ・サーバー用の証明書を設定しようとしていますが、「秘密鍵へのアクセス権がありません」というエラーが表示されます。 がidentityserverからそれを取ると、次のコードは、アクセス拒否エラーアイデンティティ・サーバーが自己署名証明書をロードできない
static X509Certificate2 GetCertificateFromDisk()
{
using (var stream = File.Open(@"patht-to-pfx", FileMode.Open))
{
var cert = new X509Certificate2(ReadStream(stream), "password", X509KeyStorageFlags.MachineKeySet);
return cert;
}
}
管理者としてのコードを実行している場合は、自分のアカウントの下でそれを実行している場合、それは正常に動作し、ではないがスローされます。最終的に私はlocalsystemとしてそれを実行したい。
ローカルコンピュータ証明書ストアの証明書秘密鍵のアクセス許可の下に「Everyone」を追加しました。 ...まだ例外があります。
ここで何が間違っていますか?以下の答えでCryptoGuyからそれ
更新
大きなヒントに夢中行きます。 重要な注意:ファイルを開くことが正しくないストアで証明書を取得するときにIdentityServ3がまだ失敗しました。それは、Keith Sparkjoy's tool SerfCertを使用して証明書を再生成することでした。私の以前の証明書はpowershellを使って生成されました。したがって、PowerShell証明書には秘密鍵のアクセス可能性に関する問題があることに注意してください。ツールのキースのおかげで!
標準ユーザーには、ローカルコンピュータの証明書ストアに書き込み権限がありません。適切な(管理)アカウントでコードを実行して、LocalMachineストアを変更します。 – Crypt32
@CryptoGuyしかし、私は読み取りアクセスが必要です、私のソフトウェアは、トラフィックを暗号化できるようにするためには、この証明書を開く必要があります。私は管理者アカウントの下でそれを実行することができません、それは安全ではないでしょう.. – Arjan
ドキュメントは、MMC(証明書のプライベートキーオプションを管理する)で権限を追加するとこれを許可するはずですが、うまくいかないようです... https: //technet.microsoft.com/en-us/itpro/mdop/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or--streaming-server – Arjan