Hola, tengo dudas sobre la configuración para encriptar SSL en conexiones de vb.net a mysql server, quiero que sea un certificado "casero" pero no entiendo como configurar, ya leí unos tutoriales pero no loro hacer la encriptación si me podrían ayudar me urge amigos
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
1 Respuesta
Haciendo de cuenta que usas openssl. los certificados a generar son los siguientes:
- certificado cliente
- certificado servidor
- certificado CA
para poder generarlos se debe tener instalado openssl en el equipo, el siguiente enlace contiene el instalador, elegir de acuerdo a la arquitectura:
http://slproweb.com/products/Win32OpenSSL.html
una vez instalado openssl y agregado al PATH, abrimos un prompt.
crearemos una carpeta para los certificados a crear, yo tomare el directorio "C:\certificados", puedes cambiarlo si deseas.
linea de comandos:
> mkdir C:\certificados\
> cd C:\certificados\
Ahora usaremos openssl para generar los certificados, en la página de Mysql esta la documentación respectiva.
http://dev.mysql.com/doc/refman/5.0/en/creating-ssl-certs.html
Certificado CA
linea de comandos:
> openssl genrsa 2048 > ca-key.pem
> openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem
Certificado servidor
linea de comandos:
> openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem
> openssl rsa -in server-key.pem -out server-key.pem
> openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Certificado cliente
linea de comandos:
> openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem
> openssl rsa -in client-key.pem -out client-key.pem
> openssl x509 -req -in client-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Te pedirá llenar los datos para generar el certificado tanto en el certificado cliente como en el servidor.
Nota: recuerda ingresar datos distintos para el certificado cliente y el servidor.
Testeamos que los certificados esten correctos:
> openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
deberia devolver:
server-cert.pem: OK
client-cert.pem: OK
Lo siguiente es agregar los certificados al archivo de configuracion de mysql, generalmente se encuentra en la carpeta ProgramData.
por ejemplo:
C:\ProgramData\MySQL\MySQL Server 5.6
abre el archivo my.ini
debajo de la linea que contenga: [mysql]
agrega esto:
# certificados ssl
ssl-ca="C:/certificados/ca-cert.pem"
ssl-cert="C:/certificados/client-cert.pem"
ssl-key="C:/certificados/client-key.pem"
y también debajo de la linea que contenga: [client]
agrega el codigo de arriba tal cual.
Como paso final reinicia el servicio mysql, en ocasiones llamado MYSQL56 por default
linea de comandos:
> net stop MYSQL56
> net start MYSQL56
verifica que ssl este activo ahora con la consulta:
mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
1 row in set (0.00 sec)
para forzar la encripción debes definir en la cadena de conexión el parametro SslMode como required
:
Dim conectorSalvajeAparece As New MySqlConnection("server=localhost;user=root;password=pwrd;database=algo;port=3306;encrypt=true;SslMode=Required")
https://www.connectionstrings.com/mysql/
saludos!
EDIT: como dato adicional, puedes limitar el tipo de conexíon con la sentencia GRANT
ejemplo:
GRANT ALL PRIVILEGES ON *.* TO root@localhost
IDENTIFIED BY "tupassword"
REQUIRE SSL;
esto le cuenta al servidor solo aceptar conexiones encriptadas en SSL para la cuenta root@localhost
http://mysql.conclase.net/curso/?sqlsen=GRANT
http://dev.mysql.com/doc/refman/5.0/en/grant.html
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 689594
- 1
- Jul 5, 2015
Sin Respuesta
-
- 84
- 0
- Oct 18
-
- 166
- 0
- Jul 9
-
- 535
- 1
- Mar 19
-
- 410
- 2
- Feb 26
-
- 4735
- 0
- Nov 7, 2023
-
- 479
- 0
- Sep 19, 2023
-
- 464
- 0
- Ago 21, 2023
-
- 637
- 0
- May 14, 2023
- ver todas
Actividad Reciente
alyvrs preguntó Oct 19
Ayuda , necesito mostrar datos creados solo por el…ManHol preguntó Jul 9
pasar un archivo de excel a csv en pythonArtEze respondió Abr 24
Alguien sabe, no me ignorenArtEze seleccionó una respuesta Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze preguntó Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
No me deja instalar OracleArtEze respondió Abr 24
Formulario que guarde los datos de un jsonArtEze comentó Abr 24
Script /boot/ scrapingSantiago2610 comentó Mar 23
Acualizar ChoiceField en django
Ultimas Preguntas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150480 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos