Estoy ejecutando Ubuntu Server 12.04 y quiero habilitar las conexiones SSL a MySQL.
He generado los siguientes archivos de claves / certs con OpenSSL:
- ca-cert.pem
- server-cert.pem
- server-key.pem
Los almacené en /etc/mysql
, luego agregué agregué las siguientes líneas a /etc/mysql/my.cnf
:
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
A continuación, reinicié el servidor con sudo service restart mysql
.
Sin embargo, esto no parece habilitar SSL. Dentro de una sesión mysql:
mysql> show variables like '%ssl%';
+---------------+----------------------------+
| Variable_name | Value |
+---------------+----------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /etc/mysql/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/mysql/server-key.pem |
+---------------+----------------------------+
Alguna idea de lo que me estoy perdiendo? Gracias
Respuestas:
Ubuntu 12.04 viene con OpenSSL 1.0.1, que tiene valores predeterminados algo diferentes que la versión anterior de OpenSSL 0.9.8.
Entre otras cosas, si está utilizando
openssl req -newkey rsa:2048
para generar una clave RSA, terminará con una clave en un formato llamado PKCS # 8 . Representadas en el formato PEM, estas claves tienen el-----BEGIN PRIVATE KEY-----
encabezado más genérico , que no le dice qué tipo de clave (RSA, DSA, EC) es.Anteriormente, con OpenSSL 0.9.8, las claves siempre estaban en un formato llamado PKCS # 1 , que representaba como PEM, tenía el encabezado
-----BEGIN RSA PRIVATE KEY-----
.Debido a esto, no puede simplemente cambiar el encabezado y pie de página de:
a
No es lo mismo y no funcionará. En su lugar, debe convertir la clave al formato anterior usando
openssl rsa
. Me gusta esto:MySQL (v5.5.35) en Ubuntu 12.04 está utilizando una implementación SSL llamada yaSSL (v2.2.2). Espera que las claves estén en el formato PKCS # 1 y no es compatible con el formato PKCS # 8 utilizado por OpenSSL 1.0 y posteriores. Si simplemente cambia el encabezado y el pie de página, como lo sugieren otras publicaciones en este hilo, MySQL / yaSSL no se quejará, pero no podrá conectarse y, en su lugar, terminará con un error como este:
Ubuntu 14.04 viene con OpenSSL 1.0.1f y nuevas configuraciones. Entre otras cosas, generará certificados con resúmenes SHA256 en lugar de SHA1, que se utilizó en versiones anteriores. Incidentalmente, la versión yaSSL incluida con MySQL tampoco es compatible con esto.
Si está generando certificados para usar con MySQL, recuerde asegurarse de que las claves RSA estén convertidas al formato tradicional PKCS # 1 PEM y que los certificados estén utilizando resúmenes SHA1.
Aquí hay un ejemplo de cómo generar su propia CA, un certificado de servidor y un certificado de cliente.
fuente
ERROR 2026 (HY000): SSL connection error: protocol version mismatch
errores (usando OpenSSL 1.0.1f). Cambié a OpenSSL 1.0.1e y funcionó con las instrucciones anteriores.Esto me ayudó a:
El encabezado y pie de página del archivo server-key.pem se veía así:
Pero requiere algo así:
Tenga en cuenta la CLAVE PRIVADA BEGIN RSA
Para ver el registro:
Espero que esto ayude.
fuente
openssl rsa
Tuve los mismos problemas en 12.04, pero en realidad fue una aparición lo que causó los problemas.
Encontré una solución en los foros de Ubuntu , moviendo
.pem
archivos en/etc/mysql
resuelto.También puede cambiar la configuración de apparmor en
/etc/apparmor.d/usr.sbin.mysqld
.fuente
Asegúrese de que el usuario que ejecuta el proceso mysqld tenga acceso de lectura a las claves y los archivos de certificado. Si inicia MySQL utilizando la cuenta "mysql", debería:
De lo contrario, puede obtener lo siguiente en su registro de errores:
fuente
En Ubuntu 16.04, ejecuté
mysql_ssl_rsa_setup
, pude ver los archivos en show variables como en la pregunta, perohave_ssl
y seguíhave_openssl
siéndoloDISABLED
.La solución fue a
chown mysql.mysql /var/lib/mysql/*.pem
. Alternativamente, supongo que si ejecuta mysql_ssl_rsa_setup como usuario de mysql, creará los archivos con los permisos correctos.fuente
El archivo de clave privada debería verse (formato PKCS # 1):
Si su clave privada comienza con:
(Formato PKCS # 8), entonces debe convertirlo así:
No agregue manualmente la
RSA
etiqueta " " que falta "" , porque el formato es diferente.fuente
Las opciones de inicio de SSL deben estar cerca de la parte superior de su archivo my.cnf o pueden ignorarse. Tuve problemas al ejecutar mysql 5.6 en RHEL 6.4 donde las variables SSL se ignoraban, las tenía al final del archivo my.cnf. Los moví en la parte superior del archivo (justo debajo de [mysqld]), luego reinicié el servidor y todo estuvo bien.
fuente