SslStream на TCP-сервере не может проверить сертификат клиента с помощью RemoteCertificateNotAvailable - PullRequest
2 голосов
/ 06 марта 2009

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

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

Я аутентифицирую сервер:

sslStream.BeginAuthenticateAsServer 

Я аутентифицирую клиента:

sslStream.BeginAuthenticateAsClient

Я загружаю свой сертификат клиента из Trusted Publishers - Local Machine.

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

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

1 Ответ

4 голосов
/ 06 марта 2009

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

«Я загрузил свой сертификат клиента от доверенных издателей»

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

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

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

...