Сертификат WCF с самоподпиской не доверяется клиенту
У меня есть служба WCF, которая ТОЛЬКО используется между двумя серверными машинами. Он НИКОГДА не будет использоваться публично.
Я надеялся, что смогу использовать SSL с самоподписанным сертификатом для обеспечения безопасности.
Я создал сертификат с использованием IIS7, установил его на клиентской машине с помощью IE и MMC (Personal, TrustedRoot, сторонних и доверенных лиц).
Я до сих пор не могу добраться до службы, будь то из кода или через IE8, без запроса сертификата.
Из IE я получаю обычный "Проблема с этим сертификатом безопасности веб-сайта".
Из кода я получаю сообщение об ошибке: "Не удалось установить доверительные отношения для безопасного канала SSL/TLS с полномочиями"
Почему это не работает?
Ответы
Ответ 1
Вы уверены, что ваша самоподписанная сертификация находится в хранилище сертификатов доверенных корневых центров сертификации на клиентской машине, которая будет получать доступ к вашей службе WCF? См. Скриншот ниже самозаверяющего сертификата, которому доверяет одна из моих машин Windows Vista.
Вы также уверены, что ваш сертификат является самозаверяющим сертификатом. Смотрите скриншот в конце одного из моих самозаверяющих сертификатов.
![enter image description here]()
![enter image description here]()
![enter image description here]()
Обновленная информация:
Откажитесь от this для публикации информации о том, как использовать служебную программу SelfSSL7 для создания самозаверяющих сертификатов, содержащих несколько имен хостов.
Здесь другая ссылка с хорошей информацией о файле SelfSSL7.exe и загрузке.
Ответ 2
У меня было это сегодня, но с IIS7. Если вы используете IIS для генерации сертификата (inetmgr- > выберите home node, затем выберите "Сертификаты сервера", используйте правильное меню, чтобы создать сертификат, сертифицированный по собственной инициативе. Атрибут "выдан" указан с использованием полного доменного имени вашего компьютера - например "mymachine.myintranet.copp.net" или что-то еще.
До тех пор, пока вы получите полное доменное имя для соединения с сервисом - например, "mymachine.myintranet.copp.net/myservice/service.svc", ошибка будет.
Если вы используете альтернативный URL-адрес, например IP-адрес или localhost, возникает ошибка. Итак, машина выше была, очевидно, известна как johnma в его сети, тогда она работает.
Ответ 3
Причина, по которой он не работает, заключается в том, что IE обнаруживает, что сертификат не создан из действительного центра сертификации (центра сертификации). Самоподписанные сертификаты больше для тестирования, чем что-либо еще. Не было бы особого смысла для SSL, если бы вас не предупредили об этом.