sql >> Databasteknik >  >> RDS >> Mysql

PHP till MySQL SSL-anslutningar

Här PHP (och mysqli_real_connect ) är klienten inte servern. Du konfigurerar den med mysqli_ssl_set för autentisering av klientcertifikat (och användande av servernyckeln och certifikatet).

Jag är inte säker på hur du har konfigurerat din MySQL-server, men det borde finnas något liknande detta i (MySQL)-serverdelen av konfigurationen:

ssl-key=/mysql-ssl-certs/server-key.pem
ssl-cert=/mysql-ssl-certs/server-cert.pem
ssl-ca=/mysql-ssl-certs/ca-cert.pem

Dessa tillhör ändå inte klientsidan (endast CA-certifikatet gör det, men definitivt inte serverns privata nyckel).

När du har gjort detta kan du försöka se om servern är korrekt konfigurerad med kommandoradsklienten:

mysql --ssl-verify-server-cert --ssl-ca=/mysql-ssl-certs/ca-cert.pem --ssl -h hostname ...

eller kanske detta (även om verifiera servercertifikat verkligen borde vara aktiverat för att SSL/TLS ska vara användbart)

mysql --ssl-ca=/mysql-ssl-certs/ca-cert.pem --ssl -h hostname ...

Detta bör fungera åtminstone på kommandoraden.

Sedan, från PHP, får du två alternativ:

  • använd mysqli_ssl_set som du har gjort, men lämnar $key och $cert null, såvida du inte vill använda ett klientcertifikat som verkligen borde skilja sig från ditt servercertifikat. (Jag kommer inte ihåg om det fungerar.)
  • möjligen lättare, utelämna mysqli_ssl_set helt och hållet och konfigurera detta i din globala MySQL-klientkonfigurationsfil (där PHP ska kunna hämta den, möjligen /etc/mysql/my.cnf , men detta kan variera beroende på din distribution):

    [client]
    ssl-ca=/mysql-ssl-certs/ca-cert.pem
    

(Detta liknar serverkonfigurationen, men på klientsidan/i klientsektionen.)

För auktoriseringsdelen (GRANT ):

  • REQUIRE SSL kräver endast användning av SSL/TLS
  • REQUIRE ISSUER , REQUIRE SUBJECT och REQUIRE X509 kräva att klienten presenterar ett klientcertifikat för att jämföra med de obligatoriska värdena (det är fallet där du skulle behöva använda ssl-key och ssl-cert på klientsidan (config eller inom mysqli_ssl_set ).


  1. Insamlingsmetod:FÖREGÅENDE &NÄSTA funktioner i Oracle Database

  2. Hur man får databasmetadata

  3. Fälttyper och användningar i Access 2019-databaser

  4. Fel att lägga till främmande nyckel