Пару дней назад в error.log в огромных количествах начали сыпаться вот такие записи (ip клиента заменил):
2014/09/01 12:36:02 [crit] 13175#0: *46423402 SSL_do_handshake() failed (SSL: error:05066066:Diffie-Hellman routines:COMPUTE_KEY:invalid public key error:1408B005:SSL routines:SSL3_GET_CLIENT_KEY_EXCHANGE:DH lib) while SSL handshaking, client: 1.1.1.1, server: 0.0.0.0:443 Подампили трафик. Если я всё правильно понял исходя из собранных пакетов, сервер отправляет клиенту выбранный cipher suite - в нашем случае Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039). И посылает 1024 битный pubkey для DH. Клиент, в ответ на это, присылает свой pubkey, но уже неправильного размера - 2048 бит. Серверу это не нравится и он сбрасывает соединение. Я не настоящий сварщик, но смог раскопать openssl-ный код вот досюда - модуль crypto/dh/dh_check.c, функция DH_check_pub_key: 131 if (BN_cmp(pub_key,q)<=0) 132 *ret|=DH_CHECK_PUBKEY_TOO_SMALL; 135 if (BN_cmp(pub_key,q)>=0) 136 *ret|=DH_CHECK_PUBKEY_TOO_LARGE; Эта функция вызывается из compute_key модуля crypto/dh/dh_key.c. Всё бы хорошо, но nginx в такой ситуации отписывает в error.log о каждом сброшенном соединении с уровнем [crit]. То есть, выставленный уровень фильтрации [error] в nginx.conf не помогает игнорировать такие ошибки и у нас срабатывает мониторинг. Ну ладно, фиг с ним, с мониторингом, но лог начинает сильно пухнуть в размерах. Кажется, что уровень ошибки на самом деле не такой критичный. Иначе, получается, что на сервере с обработкой хендшейка всё хорошо, но если прицельно запулнуть в сервер кривыми пакетами, он может написать в лог много-много гигабайт и сожрать весь диск. Можно понизить уровень этих ошибок до info или вообще debug? Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252989,252989#msg-252989 _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru