Estableciendo Sesiones SSL en MySQLlmengual/GESTION_BD/GBD_ACCESO_SSL.… · MySQL Workbench (I)...

Preview:

Citation preview

LUIS MENGUAL (c) Gestión de Bases de Datos

Estableciendo Sesiones SSL en MySQL

LUIS MENGUAL (c) Gestión de Bases de Datos

Estableciendo Sesiones SSL en MySQL

• 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

Objetivos:

LUIS MENGUAL (c) Gestión de Bases de Datos

Í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

LUIS MENGUAL (c) Gestión de Bases de Datos

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

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

Crear certificados Certificado del Servidor (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

Crear certificados Certificado del Servidor (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

LUIS MENGUAL (c) Gestión de Bases de Datos

Arranque Manual Servidor Variables SSL

LUIS MENGUAL (c) Gestión de Bases de Datos

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 | +---------------+--------------------+

LUIS MENGUAL (c) Gestión de Bases de Datos

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 --------------

Conexión Cliente root ssl Comprobación certificados cargados correctamente (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

Conexión Cliente root ssl Comprobación certificados cargados correctamente (III)

LUIS MENGUAL (c) Gestión de Bases de Datos

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 --------------

Conexión Cliente root ssl Comprobación certificados cargados correctamente (IV)

LUIS MENGUAL (c) Gestión de Bases de Datos

Conexión Cliente root ssl MySQL Workbench (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

Conexión Cliente root ssl MySQL Workbench (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

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

Arranque automático Servidor (I)

Fichero configuración: “my.ini”

LUIS MENGUAL (c) Gestión de Bases de Datos

Arranque Automático Servidor Variables SSL

LUIS MENGUAL (c) Gestión de Bases de Datos

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

LUIS MENGUAL (c) Gestión de Bases de Datos

CREAR USUARIOS SSL (1)

1. Usuario cliente_ssl0: Cliente SSL sin Autenticación de usuario

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Crear cliente_ssl0 (sin autenticación) Configuración en el servidor

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'

LUIS MENGUAL (c) Gestión de Bases de Datos

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)

1. Crear cliente_ssl0 (sin autenticación) Arranque Servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl0 -p --ssl-ca=CACertificado.pem Enter password: *** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 36 Server version: 5.1.37-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \s mysql Ver 14.14 Distrib 5.1.40, for Win32 (ia32) Connection id: 36 SSL: Cipher in use is DHE-RSA-AES256-SHA Using delimiter: ; Server version: 5.1.37-log Source distribution Protocol version: 10 Connection: localhost via TCP/IP Client characterset: latin1 Server characterset: latin1 TCP port: 3306 Uptime: 37 min 30 sec mysql -u cliente_ssl0 -p Enter password: *** ERROR 1045 (28000): Access denied for user 'cliente_ssl0'@'localhost' (using pas sword: YES)

1. Crear cliente_ssl0 (sin autenticación) Conexión cliente (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

show status like "ssl%“ (Comprobamos que hemos establecido una conexión SSL) ---- 'Ssl_accept_renegotiates', '0' 'Ssl_accepts', '0' 'Ssl_callback_cache_hits', '0' 'Ssl_cipher', 'DHE-RSA-AES256-SHA' 'Ssl_cipher_list', 'DHE-RSA-AES256-SHA:AES256-SHA:DHE-RSA-AES128-SHA:AES128-SHA:AES256-RMD: AES128-RMD:DES-CBC3-RMD:DHE-RSA-AES256-RMD:DHE-RSA-AES128-RMD:DHE-RSA-DES-CBC3-RMD: RC4-SHA:RC4-MD5:DES-CBC3-SHA:DES-CBC-SHA:EDH-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC-SHA' 'Ssl_client_connects', '0' 'Ssl_connect_renegotiates', '0' 'Ssl_ctx_verify_depth', '0' 'Ssl_ctx_verify_mode', '0' 'Ssl_default_timeout', '500' 'Ssl_finished_accepts', '0' 'Ssl_finished_connects', '0' 'Ssl_session_cache_hits', '0' 'Ssl_session_cache_misses', '0' 'Ssl_session_cache_mode', 'Unknown' 'Ssl_session_cache_overflows', '0' 'Ssl_session_cache_size', '0' 'Ssl_session_cache_timeouts', '0' 'Ssl_sessions_reused', '0' 'Ssl_used_session_cache_entries', '0' 'Ssl_verify_depth', '0' 'Ssl_verify_mode', '0' 'Ssl_version', 'TLSv1'

1. Crear cliente_ssl0 (sin autenticación) Conexión cliente (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

FICHERO: “mysql.log”: 130927 16:20:49 1 Connect Access denied for user 'cliente_ssl0'@'localhost‘ (using password: YES) 130927 16:21:35 2 Connect cliente_ssl0@localhost on 2 Query select @@version_comment limit 1 130927 16:21:39 2 Quit

mysql -u cliente_ssl0 -p ........................................... 16:20 mysql -u cliente_ssl0 -p --ssl-ca=CACertificado.pem................ 16:21

1. Crear cliente_ssl0 (sin autenticación) Fichero de logs “mysql.log”

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Crear cliente_ssl0 (sin autenticación) MySQL Workbench (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Crear cliente_ssl0 (sin autenticación) MySQL Workbench (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

CREAR USUARIOS SSL (2)

2. Usuario cliente_ssl: Cliente SSL con Autenticación de usuario

LUIS MENGUAL (c) Gestión de Bases de Datos

GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl'@'%' IDENTIFIED BY 'ssl‘ WITH GRANT OPTION; (Crear el usuario cliente_ssl“ con clave ssl) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl'@'%' IDENTIFIED BY 'ssl‘ REQUIRE SSL; (Al cliente cliente_ssl con clave ssl se el exige utilizar SSL) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl'@'%' IDENTIFIED BY 'ssl‘ REQUIRE X509; (Al cliente cliente_ssl con clave ssl se el exige autenticación a traves de un Certificado digital X.509) SHOW GRANTS FOR cliente_ssl; - 'GRANT ALL PRIVILEGES ON *.* TO \'cliente_ssl\'@\'%\' IDENTIFIED BY PASSWORD \'*035E199C2E188B7300132D5C991D9E002AB5C150\‘ REQUIRE X509 WITH GRANT OPTION'

2. Crear cliente_ssl (con autenticación) Configuración en el servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

genrsa -out CL_ClavePrivada.pem 1024 (Generamos un par de claves pública y privada para el usuario. Obtenemos el fichero “CLClavePrivada.pem” conteniendo la clave privada del cliente) req –new -key CL_ClavePrivada.pem -out CL_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 CL_Peticion.csr -CA CACertificado.pem -CAkey CAClavePrivada.pem -set_serial 01 -out CL_Certificado.pem (obtenemos un certificado firmado por la CA, listo para ser utilizado en el cliente)

2. Crear cliente_ssl (con autenticación) Certificado del Cliente(I)

LUIS MENGUAL (c) Gestión de Bases de Datos

x509 –inform PEM –in CL_Certificado.pem –outform DER –out CL_Certificado.crt (opcionalmente podemos obtener el fichero del certificado del cliente en formato *.crt) pkcs12 -export -in CL_Certificado.pem -inkey CL_ClavePrivada.pem -out CL_Certificado.p12 (opcionalmente podemos obtener el fichero del certificado del cliente en formato *.p12, incorporando la clave privada)

2. Crear cliente_ssl (con autenticación) Certificado del Cliente(II)

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Arranque manual del Servidor mysqld --ssl --ssl-ca=CACertificado.pem –ssl-cert=SR_Certificado.pem --ssl-key=SR_ClavePrivada.pem

2. Arranque automático con el fichero con el fichero de configuración (my.ini)

2. Crear cliente_ssl (con autenticación) Formas de Arranque Servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

Arranque Manual Servidor Variables SSL

LUIS MENGUAL (c) Gestión de Bases de Datos

Arranque Automático Servidor Variables SSL

LUIS MENGUAL (c) Gestión de Bases de Datos

1: Acceso desde línea de Comandos mysql -u cliente_ssl -p --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem --ssl-key=CL_ClavePrivada.pem 2: Acceso desde el Workbench Creamos desde el workbench una conexion “cliente_ssl” incorporando los paths de los certificados del cliente CA FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CACertificado.pem SSL CERT C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_Certificado.pem SSL KEY FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_ClavePrivada.pem

2. Crear cliente_ssl (con autenticación) Conexión Cliente (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl –p Enter password: *** ERROR 1045 (28000): Access denied for user 'cliente_ssl'@'localhost' (using pass word: YES) C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl -p --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem--ssl-key=CL_ClavePrivada.pem Enter password: *** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 5.1.37-log Source distribution mysql> \s -------------- mysql Ver 14.14 Distrib 5.1.40, for Win32 (ia32) Connection id: 10 SSL: Cipher in use is DHE-RSA-AES256-SHA Using delimiter: ; Server version: 5.1.37-log Source distribution Protocol version: 10 Connection: localhost via TCP/IP Client characterset: latin1 Server characterset: latin1 TCP port: 3306 Uptime: 8 min 46 sec

2. Crear cliente_ssl (con autenticación) Conexión Cliente Acceso línea comandos

LUIS MENGUAL (c) Gestión de Bases de Datos

Acceso workbench cliente_ssl (I)

2. Crear cliente_ssl (con autenticación) Conexión Cliente Acceso MySQL Workbench (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

2. Crear cliente_ssl (con autenticación) Conexión Cliente Acceso MySQL Workbench (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

CREAR USUARIOS SSL (3)

3. Usuario cliente_ssl1: Cliente SSL con Autenticación de usuario, verificando el propietario del certificado

LUIS MENGUAL (c) Gestión de Bases de Datos

GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl1'@'%' IDENTIFIED BY 'ssl‘ WITH GRANT OPTION; (Crear el usuario cliente_ssl1“ con clave ssl) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl1'@'%' IDENTIFIED BY 'ssl' REQUIRE X509; (Al cliente cliente_ssl1 con clave ssl se el exige autenticación a través de un Certificado digital X.509, implícitamente se le exige SSL) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl1'@'%' IDENTIFIED BY 'ssl‘ REQUIRE SUBJECT '/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/ CN=CERTIFICADO_CLIENTE_FIRMADO_CA/emailAddress=CL_GBD@FI.UPM.ES'; (Al cliente cliente_ssl con clave ssl se el exige además tener un certificado concreto) SHOW GRANTS FOR cliente_ssl1; - 'GRANT ALL PRIVILEGES ON *.* TO ''cliente_ssl1''@''%'' IDENTIFIED BY PASSWORD ''*035E199C2E188B7300132D5C991D9E002AB5C150'‘ REQUIRE SUBJECT ''/C=ES/ST=MA/ L=BOA/O=FIM/OU=UPM/CN=CERTIFICADO_CLIENTE_FIRMADO_CA/emailAddress= CL_GBD@FI.UPM.ES'' WITH GRANT OPTION'

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Configuración en el servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Arranque manual del Servidor mysqld --ssl --ssl-ca=CACertificado.pem –ssl-cert=SR_Certificado.pem --ssl-key=SR_ClavePrivada.pem

2. Arranque automático con el fichero con el fichero de configuración (my.ini)

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Formas de Arranque Servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

1: Acceso desde línea de Comandos mysql -u cliente_ssl1 -p --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem --ssl-key=CL_ClavePrivada.pem (los certificados deben estar accesibles) 2: Acceso desde el Workbench Creamos desde el workbench una conexion “cliente_ssl1” incorporando los paths de los certificados del cliente CA FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CACertificado.pem SSL CERT C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_Certificado.pem SSL KEY FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_ClavePrivada.pem

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Conexión Cliente (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Conexión Cliente (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Conexión Cliente (III)

LUIS MENGUAL (c) Gestión de Bases de Datos

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Conexión Cliente (IV)

LUIS MENGUAL (c) Gestión de Bases de Datos

Si no hay coincidencia del “subject” especificado y el “subject” recibido en el fichero mysql.err obtendríamos el siguiente mensaje de error: ****************************************************************************************** Version: '5.1.37-log' socket: '' port: 3306 Source distribution 131001 13:01:54 [Note] X509 subject mismatch: should be '/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/CN=CERTIFICADO_CLIENTE_FIRMADO_CA/ emailAddress=CL_GBD@FI.UPM.ES' but is '/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/ CN=CERTIFICADO_SR_FIRMADO_CA/emailAddress=SR_GBD@FI.UPM.ES‘ 131001 13:02:01 [Note] C:\XAMPP_28MAR11_LM\xampp\mysql\bin\mysqld.exe: Normal shutdown ********************************************************************************************

3. Crear cliente_ssl1 (con autenticación) REQUIRE SUBJECT

Fichero de logs “mysql.err”

LUIS MENGUAL (c) Gestión de Bases de Datos

CREAR USUARIOS SSL (4)

4. Usuario cliente_ssl2: Cliente SSL con Autenticación de usuario, verificando el emisor del certificado

LUIS MENGUAL (c) Gestión de Bases de Datos

GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl2'@'%' IDENTIFIED BY 'ssl‘ WITH GRANT OPTION; (Crear el usuario cliente_ssl2“ con clave ssl) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl2'@'%' IDENTIFIED BY 'ssl' REQUIRE X509; (Al cliente cliente_ssl1 con clave ssl se el exige autenticación a través de un Certificado digital X.509, implícitamente se le exige SSL) GRANT ALL PRIVILEGES ON *.* TO 'cliente_ssl2'@'%' IDENTIFIED BY 'ssl‘ REQUIRE ISSUER '/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/CN=CA_GBD/ emailAddress=lmengual@fi.upm.es'; (Al cliente cliente_ssl con clave ssl se el exige además tener un certificado emitido por una Autoridad de Certificación concreta) SHOW GRANTS FOR cliente_ssl2; - 'GRANT ALL PRIVILEGES ON *.* TO ''cliente_ssl2''@''%'' IDENTIFIED BY PASSWORD ''*035E199C2E188B7300132D5C991D9E002AB5C150'' REQUIRE ISSUER ''/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/CN=CA_GBD/emailAddress=lmengual@fi.upm.es'‘ WITH GRANT OPTION'

3. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Configuración en el servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

1. Arranque manual del Servidor mysqld --ssl --ssl-ca=CACertificado.pem –ssl-cert=SR_Certificado.pem --ssl-key=SR_ClavePrivada.pem

2. Arranque automático con el fichero con el fichero de configuración (my.ini)

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Formas de Arranque Servidor

LUIS MENGUAL (c) Gestión de Bases de Datos

1: Acceso desde línea de Comandos mysql -u cliente_ssl2 -p --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem --ssl-key=CL_ClavePrivada.pem (los certificados deben estar accesibles) 2: Acceso desde el Workbench Creamos desde el workbench una conexion “cliente_ssl2” incorporando los paths de los certificados del cliente CA FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CACertificado.pem SSL CERT C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_Certificado.pem SSL KEY FILE: C:\Archivos de programa\MySQL\CONFIGURACION_MYSQL_SSL\CLIENTE_SSL\CL_ClavePrivada.pem

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Conexión Cliente (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Conexión Cliente (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Conexión Cliente (III)

LUIS MENGUAL (c) Gestión de Bases de Datos

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Conexión Cliente (IV)

LUIS MENGUAL (c) Gestión de Bases de Datos

Si no hay coincidencia del “issuer” especificado y el “issuer” recibido en el fichero mysql.err obtendríamos el siguiente mensaje de error: ****************************************************************************************** Version: '5.1.37-log' socket: '' port: 3306 Source distribution 131001 17:38:58 [Note] X509 issuer mismatch: should be '/C=ES/ST=MA/L=BOA/O=FIM/OU=UPM/ CN=CA_GBD/emailAddress=lmengual@fi.upm.es' but is '/C=es/ST=ma/O=FIM/OU=UPM/ CN=LMENGUAL_CA/emailAddress=lmengual@fi.upm.es' ********************************************************************************************

4. Crear cliente_ssl2 (con autenticación) REQUIRE ISSUER

Fichero de logs “mysql.err”

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Dirección IP Máquina Virtual

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Acceso desde la máquina real (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Arranque Monitor tráfico

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Acceso desde la máquina real (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Captura Consulta SQL

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Cliente_ssl0 desde Máquina Real (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Cliente_ssl0 desde Máquina Real (II)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Cliente_ssl0 desde Máquina Real (III)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Cliente_ssl0 desde Máquina Real (IV)

LUIS MENGUAL (c) Gestión de Bases de Datos

CAPTURA TRÁFICO Cliente_ssl desde Máquina Real (V)

LUIS MENGUAL (c) Gestión de Bases de Datos

Verificación Certificado Servidor (I)

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl0 -p –h "127.0.0.1" --ssl-ca=CACertificado.pem --ssl-verify-server-cert Enter password: *** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.1.37-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \s -------------- mysql Ver 14.14 Distrib 5.1.40, for Win32 (ia32) Connection id: 5 SSL: Cipher in use is DHE-RSA-AES256-SHA Using delimiter: ; Server version: 5.1.37-log Source distribution Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Client characterset: latin1 Server characterset: latin1 TCP port: 3306 Uptime: 7 min 50 sec Threads: 3 Questions: 29 Slow queries: 0 Opens: 22 Flush tables: 1 Open tab les: 13 Queries per second avg: 0.61

Verificación Certificado Servidor (I) Sin Autenticación de Cliente

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl0 -p –h "127.0.0.1" --ssl-ca=CACertificado.pem --ssl-verify-server-cert Enter password: *** ERROR 2026 (HY000): SSL connection error

Verificación Certificado Servidor (II) Sin Autenticación de Cliente

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl -p –h "127.0.0.1" --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem --ssl-key=CL_ClavePrivada.pem --ssl-verify-server-cert Enter password: *** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.37-log Source distribution mysql> \s -------------- mysql Ver 14.14 Distrib 5.1.40, for Win32 (ia32) Connection id: 1 SSL: Cipher in use is DHE-RSA-AES256-SHA Using delimiter: ; Server version: 5.1.37-log Source distribution Protocol version: 10 Connection: 127.0.0.1 via TCP/IP Client characterset: latin1 Server characterset: latin1 TCP port: 3306 Uptime: 37 sec Thre ads: 1 Questions: 4 Slow queries: 0 Opens: 19 Flush tables: 1 Open tabl es: 12 Queries per second avg: 0.108 --------------

Verificación Certificado Servidor (I) Con Autenticación de Cliente

LUIS MENGUAL (c) Gestión de Bases de Datos

C:\Archivos de programa\MySQL\MySQL Workbench 5.2 CE> mysql -u cliente_ssl -p –h "127.0.0.1" --ssl-ca=CACertificado.pem --ssl-cert=CL_Certificado.pem --ssl-key=CL_ClavePrivada.pem --ssl-verify-server-cert Enter password: *** ERROR 2026 (HY000): SSL connection error

Verificación Certificado Servidor (II) Con Autenticación de Cliente

Recommended