2011-05-04 50 views
5

Tenemos una aplicación cliente que se conecta a nuestra base de datos MySQL en línea (5.1.44-registro de comunidad) a través de un conector ODBC (el servidor es un servidor web dedicado * administrado). Esto funciona muy bien. Sin embargo, no puedo hacer que funcione con SSL. Esto es lo que he hecho hasta ahora:Conexión MySQL usando ODBC (5.1) con SSL

1. servidor MySQL

Tengo el administrador del servidor * configurar MySQL con SSL, esto es 'probado por':

mysql> SHOW VARIABLES LIKE '%ssl%'; 

que resulta es esta respuesta:

+---------------+---------------------------------+ 
| Variable_name | Value       | 
+---------------+---------------------------------+ 
| have_openssl | YES        | 
| have_ssl  | YES        | 
| ssl_ca  | /***/mysql-cert/ca-cert.pem  | 
| ssl_capath |         | 
| ssl_cert  | /***/mysql-cert/server-cert.pem | 
| ssl_cipher |         | 
| ssl_key  | /***/mysql-cert/server-key.pem | 
+---------------+---------------------------------+ 

pregunta: es el servidor configurado verdad? Supongo que es ...

2. Certificados

He comprado certificados reales (a través de mi administrador de servidor). Estos se encuentran en el directorio que se muestra arriba. También descargué el cliente-cert.pem, client-key.pem y ca-cert.pem desde ese directorio.

3. usuario de MySQL con REQUIERE [SSL | X 509]

He creado un nuevo usuario y luego se concedió el acceso desde cualquier ubicación (para la prueba) con SSL:

GRANT USAGE ON *.* TO 'somevaliduser'@'%' IDENTIFIED BY PASSWORD 'somevalidpass' REQUIRE X509 

4. ODBC cliente

he (acaba de descargar e) instalado: mysql-connector-odbc-5.1.8-winx64.msi (64 bits) como mi máquina es una de 64 bits de Windows 7 máquina (así que eso no es lo que está mal).

Y he creado un DSN de usuario configurándolo así (sin opciones establecidas en pestañas), que lo muestra conectándose al servidor (sin embargo, no lo usa - SSL) con éxito (usando algún usuario válido) lo cual no requiere SSL):

Connection to MySQL server without using SSL

Así que la conexión es capaz de establecer, ahora intente utilizar SSL.

Esto se configura así, que es como he leído en MySQL.com. Así que no estoy 100% seguro de que las opciones establecidas sean las correctas.

Connection to MySQL server using SSL

Como se puede ver que se traduce en un error de HY000. Al activar el trazado (dentro de la configuración ODBC) también se muestra este error.

¿Alguien me puede dar una pista sobre cómo hacer que esto funcione? ¿Incluso si conoce solo una parte de la solución?

+0

En ambas pantallas está utilizando el mismo puerto. ¿Esta bien? ¿Qué puedes aletear del lado del servidor? ¿Hay registros? –

+0

¡Ambas preguntas realmente buenas! Gracias, voy a mirar esto pronto y reportaré. ¡Gracias! –

+0

Gracias Michal, por responder. –

Respuesta

4

He resuelto el problema.Porque he intentado varias cosas a la vez no sé lo que hizo el truco:

  1. que he tenido el administrador del servidor re-crean los certificados: Compré algunos, pero descubrí que aquellos que no podría ser utilizado para encriptar SSL la conexión. Así que por ahora estoy usando certificados OpenSSL. He tenido que volver a crear los certificados con 4) Crea tu cliente .... servidor. Deben ser únicos. (as mentioned here) en mente.
  2. Supongo que la casilla 'Verificar certificado SSL' solo se aplica cuando compra un certificado y un tercero debe verificar la validez del certificado. Desmarca esa casilla!
  3. Sólo llene los campos:
    • 'Clave SSL' (c: \ via_a \ client-key.pem)
    • 'certificado SSL' (c: \ via_a \ client-cert.pem)
    • 'SSL Certificate Authority' (c: \ via_a \ ca-cert.pem)

Tenga en cuenta:

  1. El el puerto sigue siendo el mismo (para mí).
  2. Los registros, como propuso Michal Niklas, no mostraron ninguna información útil.
  3. He activado "Usar compresión", que se dice que mejora el rendimiento.
3

estoy usando Ubuntu 12.04 LTS con MySQL Ver 5.5.22-0ubuntu1 para Debian-linux-gnu en x86_64 ((Ubuntu)) y OpenSSL OpenSSL 1.0.1 14 Mar 2012

I creó los certificados siguiendo el tutorial en http://www.thomas-krenn.com/de/wiki/MySQL_Verbindungen_mit_SSL_verschl%C3%BCsseln (El tutorial está en alemán, pero esto no es importante aquí).

Al intentar conectar con

mysql -u root -p --ssl-ca=/etc/mysql/ca-cert.pem --ssl-cert=/etc/mysql/client-cert.pem --ssl-key=/etc/mysql/client-key.pem --protocol=tcp 

siempre me dieron un mensaje de error SSL error de conexión: versión del protocolo desajuste

Esto me lleva al sitio http://bugs.mysql.com/bug.php?id=64870 que confirma (para mí) que hay un error.

Para resumir. Al final, creé todos los certificados usando mi MacOS X Lion, copié los certificados al servidor y al cliente y funcionó de inmediato.

Cuando comencé a trabajar con Linux, ¡Windows también funcionó inmediatamente! Como se mencionó anteriormente, solo tiene que establecer la clave del cliente, el certificado del cliente y el certificado de ca!

Cuestiones relacionadas