Sto provando a impostare una connessione SSL a un database MySQL ospitato tramite Amazon RDS. Sono confuso su come connettersi.Come connettersi ad Amazon RDS via SSL?
Secondo Amazon documentation, ho bisogno di scaricare un certificato CA chiamato "rds-ca-2015-root.pem" e usarlo nella mia connessione SSL. Imposta l'utente del database con cui mi sto connettendo per richiedere SSL.
In PHP, ho includono il codice sottostante per avviare la connessione:
$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);
Tuttavia, non importa quale percorso a specificare come terzo parametro in ssl_set() (anche se il percorso non è valido) , una connessione SSL è stata stabilita con successo. Il terzo parametro non può essere impostato su NULL.
Si verifica eseguendo questa query: SHOW STATUS LIKE 'Ssl_cipher';
. L'output verifica che la connessione sia crittografata (Ssl_cipher => AES256-SHA).
Qualcuno potrebbe spiegarmi come funziona? Sono confuso sul motivo per cui la connessione continua a funzionare correttamente quando il percorso non è corretto. Come viene verificato il server RDS?
Se si sta eseguendo questo su una macchina Unix in base al gusto e alla configurazione di OpenSSL che si sta utilizzando, esiste una directory che contiene i certificati di sistema. Openssl guarderà a quel percorso per un certificato appropriato. Ciò che non è chiaro qui è (assumendo che tu sia su una macchina Unix) indipendentemente dal fatto che tu abbia inserito o meno la tua cert in quella directory. Se hai fatto una connessione di successo devi avere. È possibile ottenere ulteriori informazioni su posizioni di directory specifiche qui: http://serverfault.com/questions/62496/ssl-certificate-location-on-unix-linux – mba12
qual è il PHP? – cerd
Ho fatto un bel po 'di test qui (da un'istanza EC2) e sembra che la linea che imposta il percorso della chiave pubblica PEM non sia nemmeno richiesta, né le linee per includere il PEM dai documenti AWS per la connessione tramite la riga di comando. Ciò implica che @ mba12 è corretto in quanto i certificati RDS devono già esistere nell'istanza da qualche parte e non è necessario fare riferimento. Se li riferimento in modo errato allora sì, si rompe. Stai provando questo fuori da un VPC AWS? –