tutorial servidor ec2 configurar php mysql database ssl amazon-rds

php - servidor - connect mysql amazon ec2



¿Cómo conectarse a Amazon RDS a través de SSL? (1)

Estoy intentando configurar una conexión SSL con una base de datos MySQL alojada a través de Amazon RDS. Estoy confundido en cuanto a cómo conectar.

De acuerdo con la documentation de Amazon, necesito descargar un certificado de CA llamado "rds-ca-2015-root.pem" y usarlo en mi conexión SSL. Configuré el usuario de la base de datos con el que me estoy conectando para requerir SSL.

En PHP, incluyo el siguiente código para iniciar la conexión:

$mysqli = mysqli_init(); mysqli_options($mysqli, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); $mysqli->ssl_set(NULL, NULL, "/path/to/pem", NULL, NULL); $mysqli->real_connect("host", "username", "password", "name", 3306, NULL, MYSQLI_CLIENT_SSL);

Sin embargo, independientemente de la ruta que especifique como tercer parámetro en ssl_set () (incluso si la ruta no es válida), se establece con éxito una conexión SSL. El tercer parámetro simplemente no se puede establecer en NULL.

Lo verifico ejecutando esta consulta: SHOW STATUS LIKE ''Ssl_cipher''; . La salida verifica que la conexión esté cifrada (Ssl_cipher => AES256-SHA).

¿Podría alguien explicarme cómo funciona esto? Estoy confundido en cuanto a por qué la conexión continúa funcionando correctamente cuando la ruta es incorrecta. ¿Cómo se verifica el servidor RDS?


La documentación de RDS en realidad explica por qué sucede esto y sugiere que ni siquiera necesita el certificado de CA:

Amazon RDS comenzó a actualizar los certificados SSL en todas las instancias de base de datos el 23 de marzo de 2015, pero no inició un reinicio de las instancias. No se incurre en ningún impacto operativo ni tiempo de inactividad cuando se realizan estas actualizaciones, y en muchas situaciones realizaremos la actualización en su ventana de mantenimiento. Amazon RDS no actualizará el certificado para sus instancias si ya ha realizado la actualización. También tenga en cuenta que Amazon RDS no está actualizando los certificados en AWS GovCloud (EE. UU.) Y en las regiones de China (Pekín).

Independientemente de si actualiza manualmente el certificado o Amazon RDS actualiza el certificado, la instancia de la base de datos debe reiniciarse para que el nuevo certificado entre en vigencia. Puede decidir cuándo desea reiniciar manualmente la instancia de la base de datos, pero debe actualizar el certificado y reiniciar la instancia antes de que expire el certificado anterior (rds-ca-2010) el 3 de abril de 2015.

Puede verificar la autoridad de certificación (CA) que utiliza su instancia de base de datos utilizando la consola de Amazon RDS. La CA aparece en la sección Seguridad y red de los detalles de su instancia de base de datos. Si su instancia muestra rds-ca-2015, entonces el nuevo certificado se ha aplicado con éxito. Aún necesita reiniciar la instancia de su base de datos y actualizar su aplicación cliente para usar el nuevo certificado SSL.

Si la consola de Amazon RDS muestra su CA de instancia como rds-ca-2010, entonces el nuevo certificado aún no se ha aplicado a su instancia de base de datos. Utilice las siguientes instrucciones para actualizar el certificado SSL en sus instancias de base de datos.

El tercer parámetro es esencialmente ignorado por el cliente. Estoy apostando al establecer el tercer parámetro en NULL , no tiene sentido llamar a mysqli::ssl_set() si todos los parámetros son nulos.

Intenta eliminar esa llamada de función por completo.