SslStream AuthenticateAsServer Учетные данные, предоставленные для пакета, не были распознаны

Использование C# для связи через SSL с SslStream. Я использую сертификаты, сгенерированные мной и импортированные в хранилище сертификатов Windows w/ certlm.msc. Я получаю следующее исключение "Учетные данные, предоставленные пакету, не были распознаны" в SslStream.AuthenticateAsServer().

Кажется, работает некоторое время, но потом останавливается. Это было довольно сложно. Я прочитал много статей здесь, но не нашел решения, которое мне нужно, чтобы воссоздать сертификаты и импортировать их. Я создал сертификаты так:

  1. Создан ЦС:

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ makecert.exe" ^ -n "CN = CARoot" -r -pe -a sha512 -len 4096 -cy полномочия -sv CARoot.pvk ^ -ss -sr CARoot.cer

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ pvk2pfx.exe" ^ -pvk CARoot.pvk -spc CARoot.cer -pfx CARoot.pfx -po Test123

  2. Создайте сертификат сервера:

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ makecert.exe" ^ -n "CN =% 1" -iv CARoot.pvk -ic CARoot.cer -pe -a sha512 -len 4096 ^ -sky exchange -eku 1.3.6.1.5.5.7.3.1 -sv SslServer.pvk SslServer.cer

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ pvk2pfx.exe" ^ -pvk SslServer.pvk -spc SslServer.cer -pfx SslServer.pfx ^ -po Test123

  3. Создайте сертификат клиента:

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ makecert.exe" ^ -n "CN =% 1" -iv CARoot.pvk -ic CARoot.cer -pe -a sha512 ^ -len 4096 -sky exchange -eku 1.3.6.1.5.5.7.3.2 -sv SslClient.pvk ^ SslClient.cer

    "C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ x64 \ pvk2pfx.exe" ^ -pvk SslClient.pvk -spc SslClient.cer -pfx SslClient.pfx -po Test123

Я в основном использую пример кода из MSDN, и я поместил и SslServer, и SslClient в свой файл lmhosts, чтобы они разрешались.

Примечание. В диспетчере сертификатов, когда я нажимаю на них, они говорят: "У вас есть закрытый ключ, соответствующий этому сертификату".

1 ответ

Я думаю, что я понял это. Это была проблема с разрешениями, я импортировал их в менеджер сертификатов localMachine (certlm.msc), и после перезагрузки компьютера он не работал, пока я не запустил свое приложение в качестве администратора. Удаление оттуда и установка с помощью currentUser Cert Man (certmgr.msc) работали.

Примечание: я также сделал сертификаты немного по-другому, не уверен, что это имеет значение:

    makecert -ic CARoot.cer -iv CARoot.pvk -n "CN=SslServer2" -sv SslServer2.pvk -pe -sky exchange SslServer2.cer

    cert2spc SslServer2.cer SslServer2.spc

    pvk2pfx -pvk SslServer2.pvk -spc SslServer2.spc -pfx SslServer2.pfx -f
Другие вопросы по тегам