Autor YouCode - http://www.youcode.com.ar/mysql/mysql-v8-con-ssl-y-conexion-con-pdo-en-debian-11-520
Configurar MySql para que haga uso de SSL y configaremos la conexion PDO
Se asume que MySql ya esta instalado, para este artículo estamos usando MySql V8 .Ingresamos a la consola de mysql y verificamos el status de ssl.
mysql> SHOW VARIABLES LIKE '%ssl%';
Como vemos en la imagen, have_openssl y have_ssl estan activos, vamos a proceder a crear los certificados, para ello, salimos de la consola de mysql.
Hacemos:
mysql_ssl_rsa_setup --uid=mysqllos archivos que se generan los pueden ver en:
ls -l /var/lib/mysql/*.pem -rw------- 1 mysql mysql 1680 Jul 10 07:45 /var/lib/mysql/ca-key.pem -rw-r--r-- 1 mysql mysql 1112 Jul 10 07:45 /var/lib/mysql/ca.pem -rw-r--r-- 1 mysql mysql 1112 Jul 10 07:45 /var/lib/mysql/client-cert.pem -rw------- 1 mysql mysql 1680 Jul 10 07:45 /var/lib/mysql/client-key.pem -rw------- 1 mysql mysql 1680 Jul 10 07:45 /var/lib/mysql/private_key.pem -rw-r--r-- 1 mysql mysql 452 Jul 10 07:45 /var/lib/mysql/public_key.pem -rw-r--r-- 1 mysql mysql 1112 Jul 10 07:45 /var/lib/mysql/server-cert.pem -rw------- 1 mysql mysql 1680 Jul 10 07:45 /var/lib/mysql/server-key.pemreiniciamos mysql:
systemctl restart mysqleditamos el archivo de configuracion:
vim /etc/mysql/mysql.conf.d/mysqld.cnfagregamos
[mysqld] require_secure_transport = ON bind-address = 0.0.0.0si bind-address lo tienen comentado o con algun ip, lo pueden dejar, volvemos a reiniciar mysql
systemctl restart mysqlde parte del servidor, es todo.
Para las conexiones PDO solo nos queda agregar lo siguiente:
Por ej:
$db = new PDO( "mysql:host=127.0.0.1;port=3306};dbname=mi_base",'USUARIO','CLAVE', array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION , PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'", PDO::MYSQL_ATTR_SSL_KEY =>__DIR__.'/client-key.pem', PDO::MYSQL_ATTR_SSL_CERT=>__DIR__.'/client-cert.pem', PDO::MYSQL_ATTR_SSL_CA=>__DIR__.'/ca.pem', PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT=>false ) );deben colocar en la carpeta de su sitio los certificados como se ven en el codigo, puede ser la carpeta que ustedes quierean pero editen los datos que puse.
Atencion, el MYSQL_ATTR_SSL_VERIFY_SERVER_CERT=>false es porque si esta en TRUE hace que el certificado sea validado por el hostname del server y es posible que les de error, con dejarlo en false lo que no se valida es el hostname.
Con esto, ya estarian trabajndo con ssl.
http://www.youcode.com.ar/mysql/mysql-v8-con-ssl-y-conexion-con-pdo-en-debian-11-520