Ошибка SSL RemoteCertificateNameMismatch - PullRequest
2 голосов
/ 20 февраля 2009

Я использую WCF для доступа клиента к сервису. Я пытаюсь получить доступ к конечной точке с помощью TLS (https). У меня есть сертификаты с закрытыми и открытыми ключами.

Если у меня есть конечная точка службы, в которой имя хоста совпадает с именем сертификата («Issued To»), тогда я могу получить доступ к службе с клиента.

Если имена «выданных» и конечных доменных имен различаются, я получаю сообщение об ошибке «Не удалось установить доверительные отношения для безопасного канала SSL / TLS с полномочиями». Я добавил сертификаты в «Доверенные корни», «Личные» и «Надежные люди». В моем сервисе я использовал "PeerOrChainTrust".

Пожалуйста, дайте мне знать, если у кого-нибудь есть идеи по этому поводу.

Спасибо, Jan

Ответы [ 2 ]

1 голос
/ 20 февраля 2009

В этом случае вам нужно определить политику доверия для сервера на стороне клиента,

Вызовите SetCertPolicy один раз, прежде чем совершать какие-либо звонки в службы.

using System.Net;
using System.Security.Cryptography.X509Certificates;
        public static void SetCertPolicy()
        {
            ServicePointManager.ServerCertificateValidationCallback += RemoteCertValidate;
        }

        private static bool RemoteCertValidate( object sender, X509Certificate cert, X509Chain chain,
            SslPolicyErrors error )
        {
            // trust any cert!!!
            return true;
        }
0 голосов
/ 20 февраля 2009

Не думаю, что вы можете переопределить проверку соответствия имени сертификата имени сервера.

Некоторые агенты позволяют вручную переопределять после предупреждений, но если WCF не имеет настройки, позволяющей отключить проверку сертификата со всеми вытекающими опасностями. Протокол SSL предназначен прежде всего для того, чтобы клиент мог проверить, с каким сервером он общается, в противном случае вы будете открыты для всех видов уязвимостей (включая серверы типа «человек посередине» и «фальшивка»).

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