SslStream で使用する証明書を作成しています。XP では次のようにしています。
makecert -r -pe -n "CN=aName" -ss my -sr localmachine -sky exchange
-sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 server.cer
これを正しく理解していれば、server.cer に証明書が作成され、個人証明書ストアに秘密鍵が作成されます。これが完了したら、次のような証明書オブジェクトを作成できます。
X509Certificate.CreateFromCertFile(certFile);
次に、それを SSLStream で使用すると、すべて正常に動作します。
Windows 7 に切り替えたので、マシンを再起動するたびに秘密キーが消えているようです。管理者としてコマンド プロンプトを実行し、上記と同じ makecert コマンドを実行します。これは成功し、SSL 接続は正しく機能します。マシンを再起動すると、AuthenticateAsServer の呼び出しが失敗し、「サーバー モードの SSL は、関連付けられた秘密キーを持つ証明書を使用する必要があります。」という例外が表示されます。
秘密鍵が消えるのはなぜですか? 定着させるにはどうすればいいですか?