AuthenticateAsClient, дающий RemoteCertificateNameMismatch в ValidateServerCertificate, когда San не соответствует CN

#c# #.net #x509certificate #.net-standard #san

#c# #.net #x509certificate #.net-стандартный #san

Вопрос:

 private bool ValidateServerCertificate(
             object sender,
             X509Certificate certificate,
             X509Chain chain,
             SslPolicyErrors sslPolicyErrors) {}
 

sslPolicyErrors устанавливается в RemoteCertificateNameMismatch значение, когда сертификат сервера имеет SAN, отличное от общего имени.
ValidateServerCertificate вызывается, когда authenticateaclient() Запускает квитирование вместе с аутентификацией сервера.

Пример: CN: server_cert SAN: DNS:тест

Но приведенные ниже настройки не дали бы никаких sslPolicyErrors .

CN: server1 SAN: DNS:server1,server2

Ответ №1:

Клиент TLS игнорирует Subject поле сертификата при представлении расширения SAN. Это означает, что вы должны подключиться к имени, указанному в расширении SAN, в противном случае вы получите ошибку подтверждения связи TLS из-за сбоя проверки сертификата.