Почему я получаю RemoteCertificateNameMismatch? - PullRequest
1 голос
/ 21 февраля 2020

У меня есть следующий C# код клиента для проверки входящего сертификата в связи SSL (с WCF):

private bool ValidateClientCertificate(System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
    {
        _certificateValid = sslPolicyErrors == System.Net.Security.SslPolicyErrors.None ? true : false;
        return true;
    }

При вводе метода я вижу, что sslPolicyErrors установлен на RemoteCertificateNameMismatch ?

Я создал сертификат сервера следующим образом:

  1. Создать MyCert Root CA на сервере 1
  2. Запросить сертификат подчиненного CA, созданный в Сервер 2 и отправка на сервер 1 для выдачи
  3. Установить выданный сертификат MyCert CA (Подчиненный CA) на сервере 2
  4. Запросить сертификат функции на Сервере 1 с Сервера 2 с MyCert CA
  5. Установите MyCert Services Server 1 на сервере 1 и свяжите его со службой
  6. Установите MyCert Root CA и MyCert CA на клиенте и убедитесь, что он проверяет всю цепочку 3.
  7. Запустите клиент и подключитесь к службе на сервере 1

Поскольку запрос MyCert Services Server 1 был создан на сервере 1, где он также был установлен привело это я не должен получить ошибку SSL, верно? Есть ли какой-либо атрибут или что-то, что нужно установить в сертификате функции, который проверяет на сервере 1?

Насколько я понимаю, имя не должно совпадать с именем сервера?

Редактировать: Я создаю новый сертификат функции и устанавливаю CN для DNS имя самого сервера. Каждый клиентский компьютер имеет файл хоста, который указывает это имя CN на указанный c IP-адрес сервера. Однако я все еще получаю ту же ошибку политики SSL в методе ValidateClientCertificate? Какой именно параметр необходим сертификату для прохождения проверки?

1 Ответ

1 голос
/ 24 февраля 2020

Попробуйте заполнить поле «Subject Alternative Name» в сертификате DNS-именем сервера, который вызывает ваш клиент.

Эта ошибка возникает, когда клиентская система делает запрос к серверу (т.е. https://myserver.com: 443 / someaction") и будет ожидать, что либо общее имя, либо одно из значений в поле альтернативного имени субъекта будет выглядеть как" myserver.com "

Если это не помогает попытаться добавить следующую информацию к вашему вопросу: - URL-адрес, который вызывает клиент WCF - Значение общего имени сертификата на сервере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...