Я подключаюсь к своей базе данных 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.