1

Недавно я обновил сертификат сайта HTTPS на сервере, который я обслуживаю, и во время установки сжал настройки apache ssl, в частности, поддерживаемые протоколы и шифры (например, я окончательно удалил SSL3 и т.д.)

К сожалению, в течение часа мне звонили клиенты с жалобой на проблему. Клиент имеет полевую базу продавцов (около 50 из них по всей территории США и Канады), которые используют выпущенные компанией планшеты Android с приложением для индивидуального ввода заказов и отслеживания клиентов. Это приложение перестало работать - и мой клиент теперь не может получать заказы. Это довольно важно, так как они отстают на 100 тыс. Долл. В выполнении заказа всего на день позже.

Первое, что я отследил, это то, что новый сертификат корневого ЦС по умолчанию не является доверенным в Android 4 (DigiCert Global Root G2). Я установил этот сертификат на пример устройства, которое получил, и теперь, по крайней мере, хром может подключиться к сайту. Однако приложение по-прежнему не может подключиться к серверу. Он выдает ошибку "Соединение закрыто одноранговым узлом" каждый раз, когда пытается связаться с сервером.

Я предполагаю, что проблема связана с поддерживаемым набором шифров - я предполагаю, что собственный код Android не поддерживает ни один из шифров, установленных на сервере. Поэтому я получил два вопроса:

  1. Какие шифры мне нужно включить на сервере, чтобы подключить нативное приложение для Android 4? Насколько мне известно, приложение использует java.net.HttpURLConnection для подключения, чтобы удалить хост.

  2. Что еще мне нужно посмотреть / включить, чтобы попытаться заставить это работать?

Пожалуйста, обратите внимание, что обновление до более новой версии Android не вариант, так как стоимость слишком запредельная для моего клиента. У меня есть сегодня и завтра (суббота и воскресенье), чтобы решить эту проблему - или весь бизнес клиента находится под угрозой.

ОБНОВЛЕНИЕ: вот шифры / протоколы, в настоящее время включенные:

SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

1 ответ1

1

Предварительное примечание: у меня есть пример устройства с соответствующим приложением.

Итак, после нескольких часов борьбы, в порыве отчаяния, я начал изменять настройки в приложении, чтобы указывать на различные другие серверы, к которым у меня есть доступ - и, наконец, я получил один, где работало соединение - так что я скопировал протокол и зашифровав настройки с этого сервера на рассматриваемый, изменил настройки в приложении, чтобы они указывали на исходный сервер - и все заработало.

Для справки, вот настройки:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DHE-RSA-DES-CBC-SHA:!DHE-RSA-CAMELLIA256-SHA:!DHE-RSA-CAMELLIA128-SHA:!DHE-DSS-CBC-SHA:!DHE-RSA-DES-CBC3-SHA

Я должен согласиться с тем, что оценка SSL Labs снизилась с A+ до A-, поскольку мне пришлось включать слабые шифры, но это понятно. Также, по какой-то причине, первоначальное соединение занимает очень много времени (несколько секунд) - но, по крайней мере, заказы можно отправить :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .