Налаштовано MySQL для SSL, але SSL все ще ВИМКНЕНО ..!


9

Я налаштував SSL для MySQL за допомогою наступного сценарію.

#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem

echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem

echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem

echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo 
echo ""

echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0

Були створені такі файли:

ca-key.pem             ca-cert.pem
server-req.pem         server-key.pem       server-cert.pem
client-req.pem         client-key.pem       client-cert.pem

Потім я поєднав server-cert.pem і client-cert.pem в ca.pem (я читав у публікації, щоб це зробити ..)

Я створив користувача ssl в MySQL:

GRANT ALL ON  *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;

Далі я додав у my.cnf наступне

[mysqld]
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

Після перезавантаження сервера я підключився до mysql, але SSL все ще не використовувався :(

mysql -u ssluser -p

SSL:                    Not in use

Навіть параметр have_ssl все ще показував вимкнено .. :(

mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| have_openssl  | DISABLED                                    |
| have_ssl      | DISABLED                                    |
| ssl_ca        | /root/abc/ssl_certs/ca.pem          |
| ssl_capath    |                                             |
| ssl_cert      | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher    |                                             |
| ssl_key       | /root/abc/ssl_certs/server-key.pem  |
+---------------+---------------------------------------------+

Я пропустив якийсь крок, чи що не так? ..

Відповіді з пропущеними деталями детально будуть високо оцінені ..


Яку версію OpenSSL ви використовуєте? І, будь ласка, включіть помилку + попередження про вхід у MySQL. Якщо ви бачите повідомлення про помилку "не в змозі прочитати приватний ключ", ви, ймовірно, певним чином потрапили в цю помилку . Створення нових ключів + сертів у старій системі, використовуючи їх у недавньому MySQL, вирішило проблему для мене.
gertvdijk

@gertvdijk Я використав openssl-1.0.1c. Я перевіряю журнали на вказану помилку.
Sunrays

Поперше. Перевірте, чи підтримує mysql ssl. mysql --ssl --helpТакож не забудьте перезапустити mysql після внесення цих змін до my.cnf
Валентин Байрамі

1
@ val0x00ff так MySQL підтримує ssl, якщо значення have_ssl вимкнено.
Sunrays

спробуйте mysql --ssl -u ssluser -pзастосувати SSL на клієнта. після того, як працює, можна визначити, чому REQuIRE SSL не робить.
johannes

Відповіді:



3

Спробуйте перевірити це:

  • Увімкніть журнал попередження про попередження MySQL та прочитайте ці фактичні записи журналу.
  • Перевірте дозволи файлової системи, щоб користувач міг mysqlчитати файли як MySQL ( ?). В /rootЯ не думаю , що це за замовчуванням.
  • Чи забороняє Apparmor або SELinux MySQL читати сертифікати та клавіші?
  • Вас може вразити неприємна помилка недавньої несумісності OpenSSL проти MySQL. Мені не вдалося генерувати ключі на Ubuntu 12.04, які міг прочитати MySQL, тоді як ті, які я генерую на Debian Squeeze, працюють добре.

2

На Ubuntu ви можете перевірити, чи apparmorблокує доступ до файлів cert, див. Посібник .

Потім слід перевірити дозволи / права власності на файли та додати необхідні права /etc/apparmor.d/usr.sbin.mysqld. Дивіться цю тему .


2

У мене виникла ця проблема, і вона допомогла змінити право власності на файли .pem:

chown mysql.mysql /var/lib/mysql/*.pem  (or in your case /root/abc/ssl_certs/*.pem)

(Від Craig Wright - /ubuntu/194074/enabling-ssl-in-mysql )


Це вирішило для мене питання.
anteatersa

0

Додайте "ssl" у [mysqld]розділ, як у my.cnfфайлі

ssl
ssl-ca          = /root/abc/ssl_certs/ca.pem
ssl-cert        = /root/abc/ssl_certs/server-cert.pem
ssl-key         = /root/abc/ssl_certs/server-key.pem

а потім перезапустіть mysql і перевірте ще раз. Це спрацює.


0

Я вважаю, що ця проблема пов'язана з тим, що ви неправильно вказали шляхи до файлу для вашого сертифіката CA, ключа сервера та сервера. Він повинен бути у такому форматі ...

ssl-ca=path/to/repo/mysql-directory/path/to/pem/cacert.pem
ssl-cert=path/to/repo/mysql-directory/path/to/pem/server-cert.pem
ssl-key=path/to/repo/mysql-directory/path/to/pem/server-key.pem

тобто вам потрібен ПОВНИЙ ФАЙЛ ПАРТ certs та ключів у вашій інсталяційній папці mysql, а не відносний шлях '/ root /'.

Ось приклад моєї установки:

mysql> show variables like '%ssl%';
+---------------+----------------------------------------------------------+
| Variable_name | Value                                                    |
+---------------+----------------------------------------------------------+
| have_openssl  | YES                                                      |
| have_ssl      | YES                                                      |
| ssl_ca        | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/ca.pem         |
| ssl_capath    |                                                          |
| ssl_cert      | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-cert.pem|
| ssl_cipher    |                                                          |
| ssl_key       | C:/wamp64/bin/mysql/mysql5.7.14/etc/certs/server-key.pem |
+---------------+----------------------------------------------------------+

Перегляньте наступне посилання для додаткової інформації. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html


Його шляхи починаються з а /, це означає, що це повні шляхи, а не відносні шляхи. /root/- домашня папка для кореневого користувача в системі Unix.
bobpaul
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.