Я использую Ubuntu Server 12.04 и хочу включить SSL-соединения с MySQL.
Я сгенерировал следующие файлы ключей / сертификатов с OpenSSL:
- ча-cert.pem
- Сервер-cert.pem
- Сервер-key.pem
Я сохранил их в /etc/mysql
, а затем добавил следующие строки /etc/mysql/my.cnf
:
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Далее я перезапустил сервер с sudo service restart mysql
.
Тем не менее, это не похоже на включение SSL. В рамках MySQL сессии:
mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /etc/mysql/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/mysql/server-key.pem |
+---------------+----------------------------+
Есть идеи, что мне не хватает? Благодарность
Ответы:
Ubuntu 12.04 поставляется с OpenSSL 1.0.1, который имеет несколько иные значения по умолчанию, чем более старая версия OpenSSL 0.9.8.
Среди прочего, если вы используете
openssl req -newkey rsa:2048
для генерации ключа RSA, вы получите ключ в формате PKCS # 8 . Представленные в формате PEM, эти ключи имеют более общий-----BEGIN PRIVATE KEY-----
заголовок, который не сообщает вам, какой это (RSA, DSA, EC) ключ.Ранее, в OpenSSL 0.9.8, ключи всегда были в формате PKCS # 1 , который представлен как PEM, имел заголовок
-----BEGIN RSA PRIVATE KEY-----
.Из-за этого вы не можете просто изменить верхний и нижний колонтитулы:
в
Это не то же самое, и это не будет работать. Вместо этого вам нужно конвертировать ключ в старый формат, используя
openssl rsa
. Так:MySQL (v5.5.35) в Ubuntu 12.04 использует реализацию SSL, называемую yaSSL (v2.2.2). Ожидается, что ключи будут в формате PKCS # 1 и не поддерживает формат PKCS # 8, используемый OpenSSL 1.0 и новее. Если вы просто измените верхний и нижний колонтитулы, как предложено в других публикациях в этой теме, MySQL / yaSSL не будет жаловаться, но вы не сможете подключиться и вместо этого получите такую ошибку:
Ubuntu 14.04 поставляется с OpenSSL 1.0.1f и новыми настройками. Помимо прочего, он будет генерировать сертификаты с дайджестами SHA256 вместо SHA1, который использовался в более ранних версиях. Кстати, версия yaSSL в комплекте с MySQL также не поддерживает это.
Если вы генерируете сертификаты для использования с MySQL, не забудьте убедиться, что ключи RSA преобразованы в традиционный формат PEM PKCS # 1 и что сертификаты используют дайджесты SHA1.
Вот пример того, как создать свой собственный CA, сертификат сервера и сертификат клиента.
источник
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
ошибки (используя OpenSSL 1.0.1f). Я перешел на OpenSSL 1.0.1e, и он работал с вышеуказанными инструкциями.Это помогло мне:
Верхний и нижний колонтитулы файла server-key.pem выглядят так:
Но для этого нужно нечто подобное:
Обратите внимание, НАЧАЛО RSA ЧАСТНЫЙ КЛЮЧ
Для просмотра журнала:
Надеюсь это поможет.
источник
openssl rsa
У меня были те же проблемы 12 апреля, но на самом деле это был apparmor, который вызвал проблемы.
Я нашел решение на форумах Ubuntu , переместив
.pem
файлы в/etc/mysql
его решение.Вы также можете изменить конфигурацию устройства в
/etc/apparmor.d/usr.sbin.mysqld
.источник
Убедитесь, что пользователь, выполняющий процесс mysqld, имеет доступ на чтение к ключам и файлам сертификатов. Если вы запустите MySQL, используя учетную запись «mysql», вы должны:
В противном случае вы можете получить следующее в вашем журнале ошибок:
источник
На Ubuntu 16.04 я запускал
mysql_ssl_rsa_setup
, мог видеть файлы в переменных показа, как в вопросе, но такhave_ssl
иhave_openssl
осталосьDISABLED
.Решение было
chown mysql.mysql /var/lib/mysql/*.pem
. В качестве альтернативы, я предполагаю, что если вы запустите mysql_ssl_rsa_setup от имени пользователя mysql, он создаст файлы с правильными разрешениями.источник
Файл закрытого ключа должен выглядеть следующим образом (формат PKCS # 1):
Если вместо этого ваш закрытый ключ начинается с:
(Формат PKCS # 8), тогда вы должны конвертировать его так:
Не добавляйте вручную «отсутствующий» «
RSA
» тег вручную, потому что формат другой.источник
Параметры запуска SSL должны находиться в верхней части файла my.cnf, иначе они могут быть проигнорированы. У меня были проблемы с запуском mysql 5.6 на RHEL 6.4, где переменные SSL игнорировались, у меня они были в конце файла my.cnf. Я переместил их вверху файла (чуть ниже [mysqld]), затем перезапустил сервер, и все было в порядке.
источник