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
-
- 407130
- 1
- Jul 5, 2015
Sin Respuesta
-
- 165
- 0
- Mar 19
-
- 76
- 1
- Feb 26
-
- 189
- 0
- Ene 30
-
- 1093
- 0
- Nov 7, 2023
-
- 294
- 0
- Sep 19, 2023
-
- 302
- 0
- Ago 21, 2023
-
- 386
- 0
- May 14, 2023
-
- 355
- 0
- Abr 21, 2023
- ver todas
Actividad Reciente
Santiago2610 comentó Mar 23
Acualizar ChoiceField en djangoSantiago2610 preguntó Mar 19
Acualizar ChoiceField en djangogonzalss preguntó Feb 26
Script /boot/ scrapingParkJo preguntó Ene 30
No me deja instalar Oracleelporfirio respondió Ene 10
Actualizar la imagen con los datos devuelto en un …ovedg preguntó Dic 31, 2023
Actualizar la imagen con los datos devuelto en un …Ehdez preguntó Nov 7, 2023
Necesito en wordpress un pluging que me calcule la…pedrourday preguntó Sep 19, 2023
Alternativas a ThreeJS y BabylonJS?pedrourday preguntó Ago 21, 2023
¿Que tecnologias y lenguajes me recomiendan?Fabio respondió Jul 11, 2023
plugin de efecto circular 3d en imagenes
Ultimas Preguntas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150460 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos