Hola buenas.
Con el propósito de proteger la comunicación entre dos hosts, donde en uno hay la web (192.168.1.60) y el otro la Base de Datos MySQL (192.168.1.36), miré la manera, y parecía que activando el SSL sobre MySQL sería la solución.
Pues bien después de muchas pruebas finalmente he conseguido compilar y arrancar el servidor MySQL a fin de que soportase SSL. Después hice lo propio para el cliente y parece que todo estaba bien.
El problema que no hay manera de solucionar ahora, es:
La conexión a la BD de MySQL desde la línea de comandos funciona sin problema con SSL:
user@ubuntu-server:~/SSL/newcerts$ /usr/local/mysql/bin/mysql -h 192.168.1.36 -v
--user=remoto -p --ssl-ca=cacert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 361
Server version: 5.0.45 Source distribution
Reading history-file /home/user/.mysql_history
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> \s
--------------
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.45, for pc-linux-gnu (i686) using
EditLine wrapper
Connection id: 361
Current database:
Current user: remoto@192.168.1.60
SSL: CIPHER IN USE IS EDH-RSA-DES-CBC3-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.45 Source distribution
Protocol version: 10
Connection: 192.168.1.36[3] via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306
Uptime: 1 day 43 min 57 sec
Threads: 21 Questions: 10803 Slow queries: 0 Opens: 255 Flush tables: 1 Open tables:
64 Queries per second avg: 0.121
--------------
Como se puede ver en
SSL: CIPHER IN USE IS EDH-RSA-DES-CBC3-SHA
la conexión esta cifrada.
Pero des de PHP no funciona. En principio está bien instalado el mysqli
(
http://php.liukang.com/manual/es/ref.mysqli.php) pero cundo intento utilizar SSL se
queda colgado, se queda esperando respuesta y no acaba.
El código utilizado es:
<?php
$link = mysqli_init();
mysqli_ssl_set($link, ‘server-key.pem’, ‘server-sert.pem’, ‘cacert.pam’, NULL, NULL);
mysqli_real_connect($link,'192.168.1.36','remoto'’,password','drupal_BD',NULL,NULL,MYSQLI_CLIENT_SSL);
// … Continua
?>
Si en el ultimo atributo de mysqli_real_connect pongo NULL si que va, ya que ni intenta utilizar SSL.
Por cierto, que parece que ignora lo que pongo en mysqli_ssl_set, ya que si en lugar de poner ‘server-key.pem’ pongo ‘loquesea’ no tira ningún error…
Ya no se que mas probar. Si alguien me puede echar una mano se lo agradecería mucho.
Gracias.