Назад | Перейти на главную страницу

Конфигурация MySql SSL - раздел Клиент

Я пытаюсь защитить свою работу с помощью SSL-соединения между некоторыми приложениями и моими базами данных.

В первый раз я ищу, как создавать сертификаты, и делаю что-то вроде этого:

Создание папки:

[...]$ mkdir certificats && cd certificats

CA:

[...]$ openssl genrsa 2048 > ca-key.pem

[...]$ openssl req -new -x509 -nodes -days 500 -key ca-key.pem > ca-cert.pem

Сервер:

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout server-key.pem > server-req.pem

[...]$ openssl x509 -req -in server-req.pem -days 500
       -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

Клиент:

[...]$ openssl req -newkey rsa:2048 -days 500 -nodes 
       -keyout client-key.pem > client-req.pem

[...]$ openssl x509 -req -in client-req.pem -days 500 -CA ca-cert.pem 
       -CAkey ca-key.pem -set_serial 01 > client-cert.pem

Я отвечаю на все заданные вопросы следующим образом: тот же ответ на три файла, за исключением «общего имени» (где-то я видел, что это может вызвать проблемы).

Конфигурация сервера:

После этого я сделал так:

[...]$ vim /etc/my.cnf

добавить следующие правила (на [mysqld]):

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/server-cert.pem
ssl-key=/etc/ssl/certs_mysql/server-key.pem

Теперь, когда я вхожу в обычную учетную запись, я вижу использование

SHOW VARIABLES LIKE '%ssl%';

чем включен ssl. (см. путь 3 + 2 «ДА»)

Подключение:

Итак, теперь для подключения мне нужно использовать:

[...]$ mysql -u user -ppassword -h localhost --ssl-ca=ca-cert.pem 
             --ssl-key=client-key.pem --ssl-cert=client-cert.pem

право ? (пользователь находится в режиме REQUIRE SSL).

Но это не сработало:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

Если я удалю "ca-cert.pem" из соединения, это сработает "хорошо". Я могу подключиться, и я могу видеть «Ssl_cipher» с чем-то вроде «xxx-xxx-AES264-xxx», когда я написал «\ s».

Итак, я попытался добавить:

[client]

ssl-ca=/etc/ssl/certs_mysql/ca-cert.pem
ssl-cert=/etc/ssl/certs_mysql/client-cert.pem
ssl-key=/etc/ssl/certs_mysql/client-key.pem

Но когда я добавляю «ssl-x» в раздел «client», mysql stop, НО не перезапускается, используя

[...]$ service mysqld restart

Почему я не могу записать конфигурацию ssl в клиентском разделе?

Я пытаюсь подключиться к своим базам данных с помощью файла PHP, когда я использовал 3 файла, соединение отклоняется, но если я использовал только «client-key.pem» и «client-cert.pem», я подключился.

я где-то видел чем использую

[...]$ cat client-cert.pem server-cert.pem > ca-cert.pem

может решить проблему, но используемый сертификат содержит 2 сертификата?

Итак, проблема в ca-cert.pem? Не распознается как "настоящий сертификат", поэтому в соединении отказано? Но почему я не могу использовать [клиент]?

Заранее спасибо за ответы

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

Чтобы решить проблему с SSL, я хотел бы начать с исключения mysql из уравнения. Итак, начните с использования только SSL для подключения, например:

openssl s_client -connect localhost:MYSQLPORTNR -cert client.pem -key client-key.pem -CAfile ca-cert.pem 

где MYSQLPORTNR, конечно же, следует заменить на номер порта, на котором вы запускаете mysql. Затем добавьте результат этого в свой пост.