Próbuję skonfigurować połączenie SSL z bazą danych MySQL hostowaną przez Amazon RDS. Nie wiem, jak się połączyć.Jak połączyć się z Amazon RDS przez SSL?
Zgodnie z documentation Amazon, muszę pobrać certyfikat CA o nazwie "rds-ca-2015-root.pem" i używać go w moim połączeniu SSL. Ustawiam użytkownika bazy danych, z którym się łączę, aby wymagać SSL.
W PHP I to poniższy kod, aby zainicjować połączenie:
$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);
Jednak bez względu na to, która ścieżka określić jako trzeci parametr w ssl_set() (nawet jeśli ścieżka jest nieprawidłowa) , nawiązano połączenie SSL. Trzeci parametr nie może być ustawiony na NULL.
Weryfikuję to, uruchamiając to zapytanie: SHOW STATUS LIKE 'Ssl_cipher';
. Dane wyjściowe weryfikują, czy połączenie jest szyfrowane (Ssl_cipher => AES256-SHA).
Czy ktoś mógłby mi wyjaśnić, jak to działa? Nie rozumiem, dlaczego połączenie nadal działa poprawnie, gdy ścieżka jest niepoprawna. W jaki sposób jest weryfikowany serwer RDS?
Jeśli używasz tego na maszynie uniksowej w zależności od smaku i konfiguracji OpenSSL, którego używasz, istnieje katalog przechowujący certyfikaty systemowe. Openssl będzie szukać tej ścieżki dla odpowiedniego certyfikatu. Nie jest tu jednak jasne, (zakładając, że jesteś na komputerze unixowym), czy umieściłeś swój certyfikat w tym katalogu. Jeśli udało ci się nawiązać połączenie, musisz to zrobić. Możesz uzyskać więcej informacji o określonych lokalizacjach katalogów tutaj: http://serverfault.com/questions/62496/ssl-certificate-location-on-unix-linux – mba12
co to jest PHP? – cerd
Zrobiłem sporo testów tutaj (z EC2) i wygląda na to, że linia, która ustawia ścieżkę klucza publicznego PEM, nie jest nawet wymagana, ani linie do włączenia PEM z dokumentów AWS do połączenia przez linię poleceń. Oznacza to, że @ mba12 jest poprawny, ponieważ certyfikaty RDS muszą istnieć w instancji już gdzieś i nie muszą być przywoływane. Jeśli odwołam się do nich niepoprawnie, tak, to się psuje. Czy testujesz to spoza VS AWS? –