En este tema se describe cómo utilizar enlaces cifrados con SSL/TLS en el puerto 33060 del protocolo MySQL para Lindorm Wide Table Engine.
Requisitos de versión
Wide Table Engine >= 2.8.6.14 y versión de SQL >= 2.9.7.16
Alcance
En este tema se describe cómo utilizar enlaces cifrados con SSL/TLS en el puerto 33060 del protocolo MySQL para Lindorm Wide Table Engine. A continuación se detallan los escenarios que se abordan:
El cliente solo requiere cifrado de enlace: utilice
sslMode=REQUIRED.El cliente requiere verificar la cadena de certificados del servidor con un certificado CA: utilice
sslMode=VERIFY_CAy configure el certificado CA descargado desde la consola. Cuando un cliente JDBC necesita una verificación estricta basada en CA, importe el certificado CA a un truststore antes de conectarse.
Habilitar el servicio de cifrado SSL en la consola
Requisitos previos
Lindorm Wide Table Engine está activado.
Procedimiento
Inicie sesión en la consola de Lindorm.
En la esquina superior izquierda de la página, seleccione la región donde se despliega la instancia.
En la página Instances, haga clic en el ID de la instancia de destino o en View Instance Details dentro de la columna Actions correspondiente a dicha instancia.
En el panel de navegación izquierdo de la página de detalles de la instancia, haga clic en .
En la sección Data Link SSL, habilite el servicio en el área Current Status:.
-
Espere a que se habilite el servicio de cifrado SSL. El servicio queda habilitado cuando la página muestra la siguiente información:
Current Status:: Enabled
SSL Certificate Validity Period:: la fecha de expiración del certificado que aparece en la página, por ejemplo,
2036-06-13 18:02:25SSL Certificate Validity:: Valid
Se muestra el botón Download CA Certificate.
Si el cliente necesita usar VERIFY_CA para una verificación estricta, haga clic en Download CA Certificate para obtener el archivo del certificado CA.
Modos de conexión del cliente
Solo enlace cifrado
Si únicamente necesita proteger el enlace entre el cliente y el servidor mediante cifrado, utilice sslMode=REQUIRED. Este modo habilita el cifrado TLS sin requerir que el cliente configure un certificado raíz CA adicional.
-
Ejemplo de comando de MySQL
mysql --ssl-mode=REQUIRED \ -h <host> \ -P 33060 \ -u <user> \ -p \ -D <database> \ --get-server-public-keyPara más detalles sobre su uso, consulte Use a MySQL client to connect to and use LindormTable.
-
Ejemplo de JDBC
String url = "jdbc:mysql://<host>:33060/<database>" + "?sslMode=REQUIRED" + "&allowPublicKeyRetrieval=true"; Connection connection = DriverManager.getConnection(url, user, password);Para más detalles sobre su uso, consulte Application development using the Java JDBC interface.
Verificación estricta de la cadena de certificados
Si el cliente debe confirmar que el certificado del servidor lo emitió una CA de confianza, utilice sslMode=VERIFY_CA y especifique el certificado CA descargado desde la consola mediante --ssl-ca.
mysql --ssl-mode=VERIFY_CA \
--ssl-ca=/path/to/Lindorm-CA.crt \
-h <host> \
-P 33060 \
-u <user> \
-p \
-D <database> \
--get-server-public-key
Ejemplo de consulta:
mysql --ssl-mode=VERIFY_CA \
--ssl-ca=/path/to/Lindorm-CA.crt \
-h <host> -P 33060 -u <user> -p -D <database> \
--get-server-public-key \
-e "SELECT 1 AS ok"
Reemplace /path/to/Lindorm-CA.crt del ejemplo con la ruta absoluta real del archivo Lindorm-CA.crt en su entorno local.
Si se devuelve ok = 1, el cliente completó el handshake SSL y la consulta basándose en el certificado CA.
Descripción del modo VERIFY_IDENTITY
VERIFY_IDENTITY amplía VERIFY_CA al verificar además que el nombre del host de conexión coincida con el SAN o CN declarado en el certificado del servidor. Por lo tanto, para usar este modo, el host al que se conecta el cliente debe coincidir exactamente con un nombre de dominio o dirección IP declarados en el certificado.
Verificación estricta de CA con JDBC
La práctica habitual con MySQL Connector/J consiste en importar primero el certificado CA descargado desde la consola a un truststore de Java y luego configurar dicho truststore en la URL de JDBC.
Generar un truststore
keytool -importcert \
-alias lindorm-ca \
-file /path/to/Lindorm-CA.crt \
-keystore /path/to/lindorm-ca.p12 \
-storetype PKCS12 \
-storepass changeit \
-noprompt
Reemplace
/path/to/Lindorm-CA.crtdel ejemplo con la ruta absoluta real del archivo de certificado en su entorno local.Reemplace
/path/to/lindorm-ca.p12del ejemplo con la ruta absoluta real donde planea guardar el archivo en su entorno local.
URL de JDBC
String url = "jdbc:mysql://<host>:33060/<database>"
+ "?sslMode=VERIFY_CA"
+ "&allowPublicKeyRetrieval=true"
+ "&trustCertificateKeyStoreUrl=file:/path/to/lindorm-ca.p12"
+ "&trustCertificateKeyStorePassword=changeit"
+ "&trustCertificateKeyStoreType=PKCS12";
Connection connection = DriverManager.getConnection(url, user, password);
Nota: trustCertificateKeyStoreUrl recibe la ruta del archivo del truststore, no la ruta del certificado del servidor. Importe el certificado CA descargado desde la consola a un truststore PKCS12 o JKS antes de pasarlo a JDBC.
Preguntas frecuentes
-
P: ¿El cifrado SSL surte efecto en cuanto se habilita en la consola?
R: El uso del cifrado SSL se negocia entre el servidor y el cliente. Para llevar a cabo esta negociación, debe configurar sslMode en el cliente.
-
P: ¿El cifrado SSL genera sobrecarga de rendimiento?
R: Habilitar el cifrado SSL implica cierta sobrecarga de rendimiento. En escenarios sensibles al rendimiento, se recomienda deshabilitar el cifrado SSL estableciendo
sslMode=DISABLEDen la cadena de conexión. -
P: ¿Basta con especificar la ruta del certificado para habilitar SSL automáticamente?
R: No. El enlace SSL del protocolo MySQL se habilita únicamente después de activar el interruptor SSL correspondiente en el lado del servidor.
-
P: ¿Cuál es la diferencia entre REQUIRED y VERIFY_CA?
R:
REQUIREDsolo exige establecer un enlace cifrado con TLS. No obliga al cliente a verificar la cadena de certificados del servidor.Por su parte,
VERIFY_CAno solo establece un enlace cifrado con TLS, sino que también requiere que el cliente confíe en el certificado raíz CA que emite el certificado del servidor. -
P: ¿Qué certificado se debe especificar en --ssl-ca?
R: Especifique el certificado raíz CA que descarga al hacer clic en
Download CA Certificateen la consola. No utilice directamente el certificado del servidorserver.certcomo--ssl-ca. -
P: ¿JDBC admite usar directamente el archivo crt?
R: La compatibilidad con parámetros de certificados PEM varía según la versión de MySQL Connector/J. La práctica habitual consiste en importar el certificado CA descargado desde la consola a un truststore PKCS12 o JKS y luego pasarlo a JDBC mediante
trustCertificateKeyStoreUrl,trustCertificateKeyStorePasswordytrustCertificateKeyStoreType.