Я создаю сертификат для использования с 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 должен использоваться сертификат с соответствующим закрытым ключом».
Почему закрытый ключ исчезает? Что мне нужно сделать, чтобы заставить его держаться?