у нас есть приложение, работающее с монотач на iPhone. На данный момент мы используем BasicHttpBinding для подключения к службе WCF. Теперь мы делаем соединение безопасным, снова используя BasicHttpBinding с BasicHttpSecurityMode.Transport (фактически это HTTPS).
Мы создали самоподписанный сертификат и добавили его на сервер. При доступе к серверу-адресу через браузер (как с iPhone, так и с ПК) мы можем подключиться к нему без проблем. Однако, если мы подключимся к нашему приложению MonoTouch, мы получим следующее исключение:
System.Net.WebException has been thrown
Error writing request: BeginWrite failure
Мы использовали Wireshark для анализа соединения и обнаружили, что сервер закрывает соединение (сервер отправляет tcp reset после получения ClientHello). Мы нашли в журнале ошибок IIS следующее сообщение:
An TLS 1.0 connection request was received from a remote client application, but none of the cipher suites supported by the client application are supported by the server. The SSL connection request has failed.
Если мы посмотрим, какие шифры поддерживает наш сервер, мы увидим следующий список:
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
SSL_CK_RC4_128_WITH_MD5
SSL_CK_DES_192_EDE3_CBC_WITH_MD5
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
Принимая во внимание, что мы знаем, что Monotouch по крайней мере поддерживает TLS_RSA_WITH_AES_128_CBC_SHA (согласно Wireshark)
Есть ли у кого-нибудь решение этой проблемы или обходной путь? Может быть, нам нужно использовать какие-то специальные опции в IIS или в makecert?
Заранее спасибо!