Squeak.ru - шаблоны программирования

Как подключиться к службе WCF, используя IP-адрес хост-компьютера, на котором размещена служба?

У меня есть защищенная служба WCF (https://MachineName:sslport/services), размещенная на компьютере. Разные экземпляры одной и той же службы развернуты на разных машинах. Из клиентского приложения я могу подключиться к этим службам через код, т.е.) используя ChannelFactory() с тем же адресом конечной точки. Но если я попытаюсь получить доступ к службе, используя адрес конечной точки (https://ipaddress:sslport/services), заменив имя машины на IP-адрес машины, я получаю сообщение об ошибке «не удалось установить доверительные отношения». Я знаю, что это ошибка, вызванная сертификатом ssl, который не может установить доверительные отношения.

Есть ли какие-либо настройки или какие-либо возможные способы заставить это работать? Подскажите, если кто знает об этом.

wcf
12.11.2011

Ответы:


1

Сертификаты SSL основаны на именах, что означает, что проверка сертификата SSL завершится ошибкой при попытке использовать IP-адрес вместо имени.

Вы можете изменить проверку, чтобы она всегда была успешной - это не конфигурация, а примерно 1-5 строк кода... НО это АБСОЛЮТНО НЕ тот путь, поскольку он в первую очередь побеждает всю цель убежища SSL-сертификата, потому что тогда любой SSL-сертификат (поддельный, самозаверяющий и т. д.) будет принят как нормальный...

Возможно, если вы скажете, ПОЧЕМУ вы хотели бы это сделать, есть лучший вариант.

12.11.2011

2

Я использую следующее, чтобы позволить мне обойти аутентификацию по умолчанию...

Непосредственно перед подключением я подключаю этот CallBack.

    System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);

Затем в «ValidatRemoteCertificate»

    private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
    {
        if (policyErrors == SslPolicyErrors.None) return true;
        if (cert.Subject == "CN=whatever.address.com") return true;
        return false;
    }

Вы можете включить столько адресов, сколько хотите.

Надеюсь это поможет!

12.11.2011
  • Yahia, код, который я предложил выше, явно разрешает одно имя «whatever.address.com», я не предлагаю, чтобы он возвращал «true» для каждого адреса. Если вы знаете, что домен действителен, независимо от состояния сертификата, то, безусловно, можно его принять (если я что-то не упустил). 23.12.2011
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...