SslStream на TCP-сервере не может проверить сертификат клиента с помощью RemoteCertificateNotAvailable

StackOverflow https://stackoverflow.com/questions/617109

Вопрос

Этот вопрос касается решения проблемы SslPolicyError.RemoteCertificateNotAvailable .

Я разработал TCP-сервер с SSLStream и TCP-клиент для другого конца.

Я аутентифицирую сервер с помощью:

sslStream.BeginAuthenticateAsServer 

Я аутентифицирую клиента с помощью:

sslStream.BeginAuthenticateAsClient

Я загружаю свой сертификат клиента из Надежные издатели - локальный компьютер .

Оба работают на одном компьютере.

Я попытался загрузить сертификат клиента из файлов .cer и .pfx, а не из хранилища доверенных издателей. Но обратный вызов средства проверки сертификата клиента (удаленного) сервера не удается, обнаружив, что SslPolicyErrors имеет ошибку RemoteCertificateNotAvailable .

Это было полезно?

Решение

Ссылка не появилась, но есть проблема, которую я могу заметить с помощью оценки:

" я загрузил свой сертификат клиента от доверенных издателей "

Клиентские сертификаты обычно хранятся в личном хранилище для учетной записи пользователя. То же самое с сертификатами сервера (хотя, вероятно, с ними будет связан другой OID по назначению) - «Проверка подлинности клиента» и «Проверка подлинности сервера»). Думаю, было бы странно иметь сертификат с закрытым ключом в магазине доверенных издателей.

Если дважды щелкнуть сертификат клиента или сервера в CertMgr.msc, вы должны увидеть " Этот сертификат имеет закрытый ключ " сообщение внизу.

Если нет, у вас есть только половина пары ключей - для шифрования и аутентификации требуется закрытый ключ. Сертификат сервера нуждается в закрытом ключе на стороне сервера, а сертификат клиента - в закрытом ключе на стороне клиента.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top