2009-03-05 9 views
2

Этот вопрос касается решения ошибки SslPolicyError.RemoteCertificateNotAvailable.SslStream на TCP-сервере не удается проверить сертификат клиента с RemoteCertificateNotAvailable

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

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

sslStream.BeginAuthenticateAsServer 

Я аутентифицировать клиент с:

sslStream.BeginAuthenticateAsClient 

Я загрузка моего сертификата с Trusted Publishers - Local Machine.

Оба работают на одной машине.

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

ответ

4

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

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

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

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

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

+0

Я также попробовал загрузить сертификат из «Личного» магазина. У моего сертификата есть закрытый ключ. – cdpnet

+1

Certutil -verify -urlfetch должен проверить правильность проверки сертификата. Если нет, нет кубиков. Сердеру сервера требуется «целевое назначение: аутентификация сервера», а клиентскому сертификату, вероятно, потребуется «аутентификация клиента», если он предназначен для уникальной идентификации клиента. – TristanK

+0

Tristank. Вы заметили проблему на самом деле. У меня был сертификат с целью только авторизации сервера. Мне нужен сертификат, который поддерживает клиентскую аутентификацию. Итак, как только я понял, это сработало. – cdpnet