Подтвердить что ты не робот

Можно ли заставить тестовый клиент WCF принять самозаверяющий сертификат?

У меня есть веб-служба WCF, работающая в IIS 7, с использованием самозаверяющего сертификата (это доказательство концепции, чтобы убедиться, что это маршрут, который я хочу отправить). Он должен использовать SSL.

Можно ли использовать тестовый клиент WCF для отладки этой службы без необходимости использования несамоходного сертификата?

Когда я пытаюсь получить эту ошибку:

Ошибка: невозможно получить метаданные из https:///Service1.svc Если это сообщение Windows (R) Фундаментальное обслуживание, к которому вы имеете пожалуйста, проверьте, что у вас есть включенных метаданных на указанный адрес. Для получения справки публикации метаданных, см. документация MSDN на http://go.microsoft.com/fwlink/?LinkId=65455.WS-MetadataИдентификатор ошибки обмена: https:///Service1.svc Метаданные содержат ссылку, не может быть решен: 'Https:///Service1.svc. Не удалось установить доверительные отношения для безопасного канала SSL/TLS с власть ''. базовое соединение было закрыто: Не удалось установить доверительные отношения для безопасного канала SSL/TLS. удаленный сертификат недействителен согласно валидации procedure.HTTP GET Ошибка URI: https:///Service1.svc Произошла ошибка при загрузке 'Https:///Service1.svc. Основное соединение было закрыто: Не удалось установить доверительные отношения для безопасного канала SSL/TLS. удаленный сертификат недействителен в соответствии с процедурой валидации.

EDIT: этот вопрос касается использования тестового клиента WCF для проверки веб-сервиса, уже обеспеченного через SSL, с использованием самозаверяющего сертификата. Сервер уже настроен, чтобы принять любой предоставленный сертификат, это тестовый клиент WCF. Я не вижу способа сделать это для.

4b9b3361

Ответ 1

Вы можете создать неавторизованный сертификат в области разработки, а затем использовать этот сертификат в IIS для применения SSL. Шаги:

  • Создать самозаверяющий сертификат

    makecert -r -pe -n "CN=My Root Authority" -a sha1 -sky signature 
        -ss CA -sr CurrentUser  
        -cy authority 
        -sv CA.pvk CA.cer
  • Создайте не самозаверяющий сертификат для SSL, который подписан этим корневым сертификатом, а затем создайте файл pfx из этого

    makecert -pe -n "CN=servername" -a sha1 -sky exchange
        -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk
        -sp "Microsoft RSA SChannel Cryptographic Provider"
        -sy 12 -sv server.pvk server.cer
    
    pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx

теперь вам просто нужно импортировать server.pfx в IIS и настроить привязку веб-сайта для использования этого сертификата, а также установить хранилище CA.cer в Local Computer\Trusted Root Certification Authorities на сервере и на клиенте, выполнив это Клиент WCF без проблем работал с сервисом через HTTPS.

Ответ 2

Ответ от этого вопроса помог мне в моем случае. Обязательно используйте точное имя машины, которое ожидает сертификат. Для примера machine/service.svc может не работать, а machine.domain/service.svc - работает.

Ответ 3

вы должны это сделать, если вы замените тестовый клиент WCF WCFStorm Lite Edition. Он бесплатный и довольно гибкий, чем MS test client... например, он позволит вам указать имя пользователя и пароль, если вы выполняете аутентификацию имени пользователя.

Ответ 4

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

        using (ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client())
        {
            System.Net.Security.RemoteCertificateValidationCallback callBack = (sender, certificate, chain, sslPolicyErrors) => true;
            ServicePointManager.ServerCertificateValidationCallback += callBack;

            Console.WriteLine(proxy.GetData(35));

            ServicePointManager.ServerCertificateValidationCallback -= callBack;
        }

Ответ 5

Да, это возможно.

Просто загрузите созданный WSDL из службы (https://localhost/Service1.svc?singleWsdl) и укажите путь к этому файлу при добавлении службы в WCF Проверить клиента.

Ответ 6

Вы можете предоставить свой собственный метод для проверки сертификата.

Попробуйте следующее:

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

Обратный вызов:

bool EasyCertCheck(object sender, X509Certificate cert,
        X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
    return true;
}