sql >> Databáze >  >> RDS >> Mysql

SSL připojení PHP k MySQL

Zde PHP (a mysqli_real_connect ) je klient, nikoli server. Provádíte konfiguraci pomocí mysqli_ssl_set pro ověřování klientským certifikátem (a pomocí klíče serveru a certifikátu).

Nejsem si jistý, jak jste nakonfigurovali svůj server MySQL, ale v části konfigurace serveru (MySQL) by mělo být něco takového:

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

Ty stejně nepatří na stranu klienta (patří pouze certifikát CA, ale rozhodně ne soukromý klíč serveru).

Jakmile to uděláte, můžete zkusit zjistit, zda je server správně nakonfigurován pomocí klienta příkazového řádku:

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

nebo možná toto (ačkoli ověřte, že certifikát serveru by měl být skutečně povolen, aby bylo SSL/TLS užitečné)

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

To by mělo fungovat alespoň na příkazovém řádku.

Pak z PHP získáte dvě možnosti:

  • použijte mysqli_ssl_set jako vy, ale ponecháte $key a $cert null, pokud nechcete použít klientský certifikát, který by se skutečně měl lišit od certifikátu vašeho serveru. (Nepamatuji si, zda to funguje.)
  • možná jednodušší, vynechat mysqli_ssl_set dohromady a nakonfigurujte to ve svém globálním konfiguračním souboru klienta MySQL (kde by to PHP mělo umět vyzvednout, možná /etc/mysql/my.cnf , ale to se může lišit v závislosti na vaší distribuci):

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

(Toto je podobné konfiguraci serveru, ale na straně klienta/v klientské sekci.)

Pro část autorizace (GRANT ):

  • REQUIRE SSL vyžaduje pouze použití SSL/TLS
  • REQUIRE ISSUER , REQUIRE SUBJECT a REQUIRE X509 vyžadovat, aby klient předložil klientský certifikát pro porovnání s požadovanými hodnotami (to je případ, kdy byste museli použít ssl-key a ssl-cert na straně klienta (config nebo v rámci mysqli_ssl_set ).


  1. MySQL:Dynamicky určete primární klíč tabulky

  2. Instalace 32bitového klienta Oracle na Windows Server Již běží 64bitový databázový server Oracle

  3. Jak změnit sekundy na časovou hodnotu v MySQL

  4. node-mysql více příkazů v jednom dotazu