C # в VS2010, с использованием WCF, иерархических сертификатов и IIS6 - PullRequest
0 голосов
/ 07 октября 2010

Мы много работали над приложением, разработанным в VS 2010, C # и WCF.Мы используем Transport в качестве режима безопасности и в свойствах TransportSecurity для None и None.

Мы размещаем службу в IIS6.Много поработав, нам удалось заставить его работать, используя https.Сертификат, который мы использовали, был создан самостоятельно, с помощью инструмента selfssl.exe.После создания сертификата и его сохранения в списке «Доверенные сертификаты» мы устанавливаем его в качестве сертификата сервера в IIS для нашего сайта, а также выполняем «привязку» между отпечатком сертификата и адресом локального хоста с помощью порта 443, используяhttpcfg tool.

Хорошо, мы также используем знаменитый фрагмент кода, не рекомендуемый для производства (мы знаем об этом), который позволяет проверять сертификат, который не выдан действующим центром сертификации.Этот кусок кода мы взяли из MSDN WCF Hands On Lab.В этом фрагменте кода мы даем ему CN = NAME сертификата, и он работает.

Хорошо, наконец-то мы получили его на работу.Это все было в разработке.Сейчас мы находимся на стадии тестирования, и они согласились использовать кусок кода, который включает сертификат.Проблема в том, что сертификат, который нам нужно использовать, после установки его в IIS и настройки использования известного фрагмента кода, он не работает.

Ошибка, которую мы получаем, является этой (толькопоказывает первую часть ошибки, а не трассировку стека):

System.ServiceModel.Security.SecurityNegotiationException: не удалось установить доверительные отношения для безопасного канала SSL / TLS с полномочием «172.30.224.46».---> System.Net.WebException: базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS.---> System.Security.Authentication.AuthenticationException: удаленный сертификат является недействительным в соответствии с процедурой проверки.

Новый сертификат выдан их собственным центром сертификации и имеет несколько отличий по сравнению с нашим собственным-Произведенные, например, свойства «Использование» отличаются, или, например, наш Сертификат имеет свойство «Расширенное использование», а их нет.

Другое большое отличие, которое мы замечаем в сертификате, состоит в том, что ихявляется частью иерархии сертификатов, где у них есть доверенный корневой сертификат, затем промежуточный центр сертификации и сертификат для использования на сервере находятся под этим промежуточным сертификатом.

Специальная конфигурация, необходимая для поддержки такого родасертификатов, которые являются частью иерархии?Что вы, ребята, можете рассказать нам об этом?.... нам нужна помощь: S

Мы также провели тест, создав самоподписанный сертификат, и все шаги, необходимые для его установки в своей среде, и приложение работает.

Спасибо за вашу помощь и внимание,

Андрей Гонсалес

1 Ответ

0 голосов
/ 07 октября 2010

Обычно вы получаете эту ошибку, когда имя сервера, хранящееся в сертификате, отличается от имени хоста, которое вы используете на клиенте для ссылки на сервер.

Например, ваш сертификат сервера выдается для «ваш сервер.com ", и вы пытаетесь получить к нему доступ с клиента, используя только" ваш сервер "или его IP-адрес.

...