Не удалось выполнить операцию SSL с кодом 1: клавиша dh слишком мала

Я подключаюсь к своей базе данных Google Cloud SQL через SSL. Для этого я использую codeigniter 3.0, хотя драйвер mysqli немного модифицирован, чтобы позволить эту функцию.

Он работает много месяцев. Однако он только начал возвращать это предупреждение:

Message: mysqli::real_connect(): SSL operation failed with code 1. OpenSSL Error messages: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small 

Я предполагаю, что DH Key is too small – главная проблема, но я понятия не имею, что это значит. У меня есть ключ для обмена ключами Диффи-Хеллмана, а также сообщение «слишком маленький ключ», но мне не повезло.

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

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

Спасибо за любой проницательный / читаемый материал по этому вопросу.

 ... error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small 

Номер ошибки, который вас интересует, – это ошибка OpenSSL 0x14082174.

SSL3_CHECK_CERT_AND_ALGORITHM обычно SSL3_CHECK_CERT_AND_ALGORITHM при включении шифров класса экспорта. Это может появиться снова в переговорах по неэкспортировке из-за Logjam (см. Ниже).


Я предполагаю, что DH Key слишком мал – главная проблема, но я понятия не имею, что это значит. У меня есть ключ для обмена ключами Диффи-Хеллмана, а также сообщение «слишком маленький ключ», но мне не повезло.

Это связано с недавней атакой Лоджима из статьи « Несовершенная передовая тайна»: как Диффи-Хеллман не работает на практике .

Вы должны использовать 2048-бит группы Диффи-Хеллмана или больше. Вы не должны использовать 512-битные или 1024-разрядные группы Диффи-Хеллмана.

Первое, что нужно проверить, это строка списка шифрования. Он должен быть похож на:

 "HIGH:!aNULL:!MD5:!RC4" 

Это позволит избежать шифров экспортного класса и использовать современные шифры. Но вам также нужно будет убедиться, что ваш ответ DH не использует слабый / небольшой размер поля. Для этого вам нужно проверить конфигурацию сервера.


Некоторые люди «решают» проблему с помощью kRSA . kRSA является ключевой транспортной схемой, а не схемой ключевых соглашений . Схема транспортировки ключей RSA не обеспечивает прямую секретность, и ее использование обычно обескураживается. Фактически, он будет удален из TLS 1.3.

Я могу сказать только «обычно обескураженный», потому что это зависит от защищаемых данных. Если у вас есть SSL / TLS для защиты загружаемого файла, доступного для него, то его, вероятно, ОК использовать. Если ваш веб-сайт имеет логин, то его, вероятно, немного рискованно использовать, потому что пароль – это секретные данные (в отличие от общедоступного загружаемого файла).

Чтобы избежать передачи ключей и прохождения этих тестов Qualsys SSL Labs для конфигурации веб-сервера и пересылки секретности, используйте:

 "HIGH:!aNULL:!kRSA:!MD5:!RC4" 

В вашем конфигурационном файле Apache это будет выглядеть так:

 # cat /etc/httpd/conf.d/ssl.conf | grep SSLCipherSuite # SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCipherSuite HIGH:!aNULL:!kRSA:!MD5:!RC4 

Кажется, я вспомнил, что несколько раз wget от небольших групп, прежде чем газета была выпущена. Это может сделать хороший тестовый пример для вашего сайта.

Существует также улучшенный sslscan , который проверяет множество вещей. Это тоже может стать хорошим инструментом QA.