WCF Mono - BasicHttpBinding с SSL - PullRequest
       15

WCF Mono - BasicHttpBinding с SSL

7 голосов
/ 17 апреля 2010

Я пытаюсь перенести существующее клиентское приложение WCF для запуска в Linux под Mono. Сейчас я тестирую все, выясняю, что работает на Mono, а что нет.

Клиент делает очень простой вызов через basicHttpBinding. Он прекрасно работает, пока я не включу SSL (то есть в привязке укажите BasicHttpSecurityMode.Transport).

  • Работает на .NET в Windows, отлично работает
  • Запуск на Mono в Ubuntu 9.10 / Mono 2.6 Я получаю следующую ошибку:

Исключение в асинхронной операции: System.Net.WebException: Ошибка при получении потока ответов (Запись: сбой аутентификации или дешифрования.): SendFailure ---> System.IO.IOException: сбой аутентификации или дешифрования. ---> Mono.Security.Protocol.Tls.TlsException: неверный сертификат, полученный от сервера. Код ошибки: 0xffffffff800b010a

Я прочитал Часто задаваемые вопросы по безопасности Mono ; однако сертификат SSL на сервере получен от корневого центра сертификации (приобретенного сертификата), выданного Центром сертификации Equifax Secure. Я запустил инструмент TlsTest при установке Ubuntu по URL-адресу .svc, и проблем и ошибок не было. Также я могу использовать сервис Firefox без предупреждений о безопасности.

Что мне не хватает?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2010

Файл TlsTest от Mono действительно хорош для проверки этого, так что даже глупо даже спрашивать - но: вы можете использовать WebClient, чтобы сделать запрос к файлу .svc и получить ответ обратно? Если нет, возможно, по какой-то причине с сертификатом все еще есть проблемы.

Я также предполагаю, что вы использовали инструменты mozroots или certmgr для проверки наличия корневого CA? А как насчет явного добавления сертификата на вашем сайте в магазин через certmgr?

Еще одно напоминание: инструмент certmgr обычно работает с копией сертификатов для текущего пользователя, необходимо указать аргумент --machine, чтобы все пользователи получили сертификат.

0 голосов
/ 31 января 2011

Я нашел какой-то трюк, чтобы устранить ошибку:

using System.Security.Cryptography.X509Certificates;

public class HttpWebRequestClientCertificateTest : ICertificatePolicy {



    public bool CheckValidationResult (ServicePoint sp, X509Certificate certificate,

        WebRequest request, int error)

        {

            return true;

        }

    }

.....

ServicePointManager.CertificatePolicy = new HttpWebRequestClientCertificateTest ();

HttpWebRequest request = ...

Возможно, это будет работать для других, у которых есть эта ошибка в Mono 2.6.

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