У меня есть следующий 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 ?
Я создал сертификат сервера следующим образом:
- Создать MyCert Root CA на сервере 1
- Запросить сертификат подчиненного CA, созданный в Сервер 2 и отправка на сервер 1 для выдачи
- Установить выданный сертификат MyCert CA (Подчиненный CA) на сервере 2
- Запросить сертификат функции на Сервере 1 с Сервера 2 с MyCert CA
- Установите MyCert Services Server 1 на сервере 1 и свяжите его со службой
- Установите MyCert Root CA и MyCert CA на клиенте и убедитесь, что он проверяет всю цепочку 3.
- Запустите клиент и подключитесь к службе на сервере 1
Поскольку запрос MyCert Services Server 1 был создан на сервере 1, где он также был установлен привело это я не должен получить ошибку SSL, верно? Есть ли какой-либо атрибут или что-то, что нужно установить в сертификате функции, который проверяет на сервере 1?
Насколько я понимаю, имя не должно совпадать с именем сервера?
Редактировать: Я создаю новый сертификат функции и устанавливаю CN для DNS имя самого сервера. Каждый клиентский компьютер имеет файл хоста, который указывает это имя CN на указанный c IP-адрес сервера. Однако я все еще получаю ту же ошибку политики SSL в методе ValidateClientCertificate? Какой именно параметр необходим сертификату для прохождения проверки?