Publicado el 26 de Junio del 2020
875 visualizaciones desde el 26 de Junio del 2020
3,1 MB
69 paginas
Creado hace 10a (28/11/2014)
Estableciendo Sesiones
SSL en MySQL
Gestión de Bases de Datos
LUIS MENGUAL (c)
Estableciendo Sesiones
SSL en MySQL
Objetivos:
• Crear la infraestructura de certificados X.509
necesaria para incorporar servicios de seguridad
en el acceso a un Base de Datos
• Establecer de forma práctica sesiones seguras en
MySQL
• Captura del trafico en el acceso a la BD
Gestión de Bases de Datos
LUIS MENGUAL (c)
Índice
Creación de la Infraestructura necesaria para el
establecimiento de accesos seguros SSL:
1. Usuario cliente_ssl0: Cliente SSL sin Autenticación de
usuario
2. Usuario cliente_ssl: Cliente SSL con Autenticación de
usuario
3. Usuario cliente_ssl1: Cliente SSL con Autenticación de
usuario, verificando el propietario del certificado
4. Usuario cliente_ssl2: Cliente SSL con Autenticación de
usuario, verificando el emisor del certificado
Gestión de Bases de Datos
LUIS MENGUAL (c)
Confirmar que la versión actual de
MySQL soporta el protocolo SSL
1. Desde un cliente
mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.37 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW VARIABLES LIKE "have_ssl";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
1 row in set (0.00 sec)
2. Desde el servidor MySQL
mysqld --ssl
[ERROR] mysql: unknown option ‘—ssl’ ->Esto indica que no soporta SSL
Gestión de Bases de Datos
LUIS MENGUAL (c)
Crear certificados
Certificado de la CA
openssl>
genrsa -out CAClavePrivada.pem 4096
(Generamos un par de claves pública y privada. Obtenemos el fichero
“CAClavePrivada.pem” conteniendo la clave privada de la CA)
req -new -x509 -days 3650 -key CAClavePrivada.pem -out CACertificado.pem
(Obtenemos un certificado autofirmado, fichero “CACertificado.pem”, que será
el certificado de la CA)
x509 –inform PEM –in CACertificado.pem –outform DER –out CACertificado.crt
(Podemos convertir el formato *.pem del certificado a formato *.crt)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Crear certificados
Certificado del Servidor (I)
genrsa -out SR_ClavePrivada.pem 1024
(Generamos un par de claves pública y privada para el usuario. Obtenemos
el fichero “SR_ClavePrivada.pem” conteniendo la clave privada del servidor)
req –new -key SR_ClavePrivada.pem -out SR_Peticion.csr
(Creamos un certificado de usuario y creamos una petición a la espera
que la firme la CA)
x509 -req -days 365 -in SR_Peticion.csr -CA CACertificado.pem
-CAkey CAClavePrivada.pem -set_serial 01 -out SR_Certificado.pem
(obtenemos un certificado firmado por la CA, listo para ser utilizado
en el Gestor de la BD, servidor, o en el cliente)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Crear certificados
Certificado del Servidor (II)
x509 –inform PEM –in SR_Certificado.pem –outform DER
–out SR_Certificado.crt
(opcionalmente podemos obtener el fichero del certificado del servidor
en formato *.crt)
pkcs12 -export -in SR_Certificado.pem -inkey SR_ClavePrivada.pem
-out SR_Certificado.p12
(opcionalmente podemos obtener el fichero del certificado del servidor
en formato *.p12, incorporando la clave privada)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Arranque Servidor
1. Arranque manual del Servidor
mysqld –ssl --ssl-ca=CACertificado.pem --ssl-cert=SR_Certificado.pem
--ssl-key=SR_ClavePrivada.pem
(Los certificados deben estar en el path adecuado)
2. Arranque automático con el fichero de configuración (my.ini)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Arranque Manual Servidor
Variables SSL
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
Comprobación certificados cargados correctamente (I)
mysql -u root --ssl-ca=ca.pem
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.37 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Ahora comprobamos que la conexión se ha establecido con ssl
mysql> SHOW STATUS LIKE "ssl_cipher";
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| Ssl_cipher | DHE-RSA-AES256-SHA |
+---------------+--------------------+
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
Comprobación certificados cargados correctamente (II)
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.16, for Win32 (x86)
Connection id: 3
Current database:
Current user: root@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
Using delimiter: ;
Server version: 5.1.37 Source distribution
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: cp850
Conn. characterset: cp850
TCP port: 3306
Uptime: 30 sec
Threads: 3 Questions: 22 Slow queries: 0 Opens: 19 Flush tables: 1 Open tab
les: 12 Queries per second avg: 0.733
--------------
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
Comprobación certificados cargados correctamente (III)
Si no están bien cargados los certificados saldría lo siguiente:
mysql -u root --ssl-ca=ca.pem
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.1.37 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW STATUS LIKE "ssl_cipher";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Ssl_cipher | |
+---------------+-------+
1 row in set (0.00 sec)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
Comprobación certificados cargados correctamente (IV)
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.5.16, for Win32 (x86)
Connection id: 9
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.1.37 Source distribution
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: cp850
Conn. characterset: cp850
TCP port: 3306
Uptime: 5 min 46 sec
Threads: 1 Questions: 59 Slow queries: 0 Opens: 20 Flush tables: 1 Open tab
les: 13 Queries per second avg: 0.170
--------------
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
MySQL Workbench (I)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Conexión Cliente root ssl
MySQL Workbench (II)
Gestión de Bases de Datos
LUIS MENGUAL (c)
Arranque automático Servidor (I)
Fichero configuración: “my.ini”
ssl
ssl-ca = "C:/XAMPP_28MAR11_LM/xampp/mysql/CONFIGURACION_MYSQL_SSL
/SERVER/CACertificado.pem"
ssl-cert = "C:/XAMPP_28MAR11_LM/xampp/mysql/CONFIGURACION_MYSQL_SSL
/SERVER/SR_Certificado.pem"
ssl-key = "C:/XAMPP_28MAR11_LM/xampp/mysql/CONFIGURACION_MYSQL_SSL
/SERVER/SR_ClavePrivada.pem"
ssl-capath = "C:/XAMPP_28MAR11_LM/xampp/mysql/CONFIGURACION_MYSQL_SSL
/SERVER"
• Con el gestor de BD apagado hay que editar el fichero my.ini
insertar las líneas anteriores, guardar y cerrar el fichero
• Copiar los certificados en los paths especificados
• Finalmente, reiniciar el Gestor de la BD
Gestión de Bases de Datos
LUIS MENGUAL (c)
Arranque Automático Servidor
Variables SSL
Gestión de Bases de Datos
LUIS MENGUAL (c)
CREAR USUARIOS SSL
1. Usuario cliente_ssl0: Cliente SSL sin Autenticación de
usuario
2. Usuario cliente_ssl: Cliente SSL con Autenticación de
usuario
3. Usuario cliente_ssl1: Cliente SSL con Autenticación de
usuario, verificando el propietario del certificado
4. Usuario cliente_ssl2: Cliente SSL con Autenticación de
usuario, verificando el emisor del certificado
Gestión de Bases de Datos
LUIS MENGUAL (c)
CREAR USUARIOS SSL (1)
1. Usuario cliente_ssl0: Cliente SSL sin Autenticación de
usuario
Gestión de Bases de Datos
LUIS MENGUAL (c)
1. Crear cliente_ssl0 (sin autenticación)
Configuración en el servidor
LUIS MENGUAL (c)
GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl0'@'%' IDENTIFIED BY 'ssl‘
WITH GRANT OPTION;
(Crear el usuario cliente_ssl0“ con clave ssl)
GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl0'@'%' IDENTIFIED BY 'ssl'
REQUIRE SSL;
(Al cliente cliente_ssl0 con clave ssl se el exige utilizar SSL)
SHOW GRANTS FOR cliente_ssl0;
(Vemos los privilegios/requisitos creados para este usuario)
-
'GRANT ALL PRIVILEGES ON *.* TO \'cliente_ssl0\'@\'%\' IDENTIFIED BY
PASSWORD \'*035E199C2E188B7300132D5C991D9E002AB5C150\'
REQUIRE SSL WITH GRANT OPTION'
Gestión de Bases de Datos
1. Crear cliente_ssl0 (sin autenticación)
Arranque Servidor
1. Arranque manual del Servidor
mysqld –ssl --ssl-ca=CACertificado.pem --ssl-cert=SR_Certificado.pem
--ssl-key=SR_ClavePrivada.pem
(Los certificados deben estar en el path adecuado)
2. Arranque automático con el fichero de configuración (my.ini)
Gestión de Bases de Datos
LUIS MENG
Comentarios de: Estableciendo Sesiones SSL en MySQL (0)
No hay comentarios