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

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

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

  1. Создал CA:

    "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 [CN02 ] 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 [CN02 ] sha512 ^ -len 4096 -sky обмен -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
источник поделиться
1 ответ

Кажется, я понял это. Это была проблема с разрешением, я импортировал их в локальный менеджер сертификатов (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
+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос