У нас есть приложение, работающее с моноточем на iPhone. На данный момент мы используем BasicHttpBinding для подключения к службе WCF. Теперь мы находимся в процессе обеспечения безопасности соединения, используя снова BasicHttpBinding с BasicHttpSecurityMode.Transport (это эффективно HTTPS).Использование HTTPS с Monotouch и WCF
Мы создали самозаверяющий сертификат и добавили его на сервер. При доступе к серверу-адресу через браузер (как с iPhone, так и с ПК) мы можем подключиться к нему без проблем. Однако, если мы соединяемся с нашим приложением MonoTouch мы получим следующее исключение:
System.Net.WebException has been thrown
Error writing request: BeginWrite failure
Мы использовали Wireshark для анализа соединения и выяснили, что сервер закрывает соединение (сервер отправляет сброс TCP после того, как получило ClientHello) , Мы нашли в ERRORLOG МИБ следующее сообщение:
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?
Заранее благодарен!