C#アプリケーションでHttpListenerクラスを使用して、SSL経由でミニWebサーバーにコンテンツを提供させようとしています。これを行うには、httpcfgツールを使用する必要があります。私は自分の公開鍵と秘密鍵のペアを持つ.pfxファイルを持っています。このキーペアを手動でローカルマシンストアにmmcを使用してインポートすると、すべて正常に動作します。ただし、X509Storeクラスを使用してこのキーペアをプログラムでインポートすると、ミニウェブサーバーに接続できません。両方の方法で証明書がLocalMachineのMYストアにインポートされることに注意してください。奇妙なことに、プログラムをインポートするとmmcで証明書を見ることができます。表示すると、UIはこの証明書に秘密鍵も使用できることを示しています。プログラムで秘密キーで証明書をインポート
キーペアを手動でインポートすると、C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
に新しいファイルが表示されることがわかりますが、プログラムでインポートすると表示されません。関連するノートでは、手動でインポートした証明書を削除しても、前述のディレクトリから対応する秘密鍵ファイルが削除されません。
最終的に私の質問は次のとおりです。私はプログラムにストアに証明書を追加すると、秘密鍵はどこに格納されていますか、なぜHttpListenerクラス(HttpApi)にアクセスできないのですか?この質問は少し関連していることを
注意が、私はこれがすべて同じWindowsユーザーとして行われているので、許認可が問題だとは思わない: How to set read permission on the private key file of X.509 certificate from .NET
回答としてマークしてください – Developer
残念ながら私は48時間待つ必要があります。その時点で私はそれをするのを忘れるでしょう。 :( – Jason
"X509KeyStorageFlags.MachineKeySet&X509KeyStorageFlags.PersistKeySet"が動作していなかった理由を調べるのに約30分かかりました。もちろん、 "X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet"である必要があります。 –