2013-07-07 3 views
7

Недавно я перешел на HAProxy от AWS ELB. Я завершаю SSL на балансировщике нагрузки (HAProxy 1.5dev19).Как отслеживать «Тайм-аут соединения во время установления SSL-соединения» и «Соединение закрыто во время установления связи ssl»

С момента переключения я продолжаю получать ошибки SSL-соединения в журнале HAProxy (5-10% от общего количества запросов). Там три типа ошибок повторяющимися: Соединение закрыто во время SSL рукопожатия Тайм-аут во время SSL рукопожатия отказа SSL рукопожатия (это один случается редко)

Я использую бесплатный сертификат StartSSL, поэтому моя первая мысль была, что некоторые хозяева не получив этого сертификата, и я не видел этих ошибок в прошлом, потому что ELB не предлагает никаких протоколов. Единственная проблема заключается в том, что некоторые хосты действительно имеют успешные соединения.

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

ответ

8

Это звучит как клиенты, которые уходят в середине рукопожатия (TCP RST или таймаут). Это было бы нормально, но 5-10% звучали слишком высоко. Возможно, это проблема с сертификатом; Я не уверен точно, как это представляет

вещей, которые происходят со мной:

  • Если переговоры очень медленно, вы будете иметь больше клиентов отвалятся.
  • У вас могут возникнуть проблемы с TCP, о которых вы не знали, пока ваш новый прокси-сервер конечной точки SSL не начнет сообщать об этом.

Вы видите отдельные хосты, которые иногда преуспевают и иногда терпят неудачу? Если это так, это вряд ли будет проблемой сертификата. Я не уверен, что соединения срываются, когда пользователь отказывается от ненадежного сертификата.

Вы можете использовать Wireshark на машине HAProxy для захвата SSL-рукопожатий и их анализа (вам не нужно расшифровывать сеансы для анализа рукопожатия, хотя вы можете с тех пор, как у вас есть закрытый ключ сервера).

+1

Спасибо Тиму за очень тщательный ответ. На самом деле это была ваша первая гипотеза, поэтому я расскажу подробности здесь, если у кого-то будет аналогичная проблема. Мы использовали этот бэкэнд для обслуживания ряда приложений для Android, которые отправляли аналитику так же, как и их закрытие. Иногда (часто на Android, реже на iOS) не хватило времени, чтобы действительно выполнить запрос, и приложение будет убито во время согласования https или сразу же после этого, в результате чего запрос BADREQ будет помечен HAProxy. В конце концов я в конечном итоге использовал ssldump и точно проанализировал, что происходит. – andreimarinescu

0

Как конфигурируется ваш интерфейс haproxy ssl?

Например я использую следующий смягчать BEAST атаки: связывают XXXX: 443 SSL элт /etc/haproxy/ssl/XXXX.pem нет-SSLv3 шифры RC4-SHA: AES128-SHA: AES256-SHA

Но некоторые клиенты, похоже, генерируют те же «ошибки сбоя SSL-авторизации». Я думаю, это потому, что конфигурация слишком ограничительна.

1

У меня было это тоже. Сначала появилось SSL handshake failure, после отключения option dontlognull мы также получили Timeout during SSL handshake в haproxy-журналах.

Во-первых, я убедился, что все таймауты defaults были верны.

timeout connect 30s 
timeout client 30s 
timeout server 60s 

К сожалению, этот вопрос в разделе frontend

Там была линия с timeout client 60, который я только предположить, что средства 60ms вместо 60s.

Кажется, что некоторые клиенты медленно подключались и выходили из строя во время установления связи SSL. Проверьте свой интерфейс на время ожидания клиента.

+0

спасибо, аднан. Это действительно была проблема, я документировал это в своем комментарии к ответу Тима. – andreimarinescu

Смежные вопросы