WCF вызывает другой WCF: не удалось установить доверительные отношения для SSL / TLS - PullRequest
2 голосов
/ 30 января 2012

У меня есть два WCF, размещенные на двух разных сайтах HTTPS с разными сертификатами.WCF (a) вызывает WCF (b) и наоборот с предложением if для отмены возможного бесконечного цикла.

Каждый раз, когда вызывается метод обоих WCF, он возвращает ошибку:

Could not establish trust relationship for the SSL/TLS

Я попытался установить сертификаты в доверенные корневые сертификаты, но ошибка все еще появляется.К сожалению, избежать WCF-call-another-WCF не вариант.

Есть ли какое-то решение для этого?

ОБНОВЛЕНИЕ:

Я пробовал размещать оба в одном и том жевеб-сайт, и он работал, так что я думаю, что это конкретно для используемого сертификата?Так должен ли использоваться тот же сертификат?или есть ли возможность использовать разные сайты с разными сертификатами?

Ответы [ 2 ]

3 голосов
/ 30 января 2012

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

Код показан ниже:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                                     {
                                                                                         return true;
                                                                                     };

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

Кроме того, поскольку у вас есть две службы A и B, вызывающие друг друга, код выше должен быть в обоих местах, когда вы делаете вызов. Выше следует доверять сертификату, поскольку он не принадлежит доверенному поставщику сертификатов.

1 голос
/ 30 января 2012

При использовании самозаверяющих сертификатов для SSL вам необходимо помнить следующее:

  1. Сертификат должен быть установлен как в хранилищах LocalHost \ My, так и LocalHost \ CA.
  2. Часть общего имени в теме должна соответствовать полному доменному имени для сервера.Для самозаверяющих сертификатов вы можете использовать публичный IP-адрес.
  3. Учетная запись, под которой работает ваша служба, должна иметь доступ на чтение к закрытому ключу сертификата.

Эти шаги могут бытьудовлетворены размещением сервисов под IIS и использованием IIS для генерации сертификата сервера.

Также следует помнить, что wcf обычно требует, чтобы CRL был прикреплен к сертификату.Но это также может быть сгенерировано с помощью certmgr.exe.

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