Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP към MySQL SSL връзки

Тук PHP (и mysqli_real_connect ) е клиентът, а не сървърът. Вие го конфигурирате с mysqli_ssl_set за удостоверяване на клиентски сертификат (и използване на сървърния ключ и сертификат).

Не съм сигурен как сте конфигурирали вашия MySQL сървър, но трябва да има нещо подобно в секцията (MySQL) сървър на конфигурацията:

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

Те така или иначе не принадлежат на клиентската страна (само сертификатът на CA, но определено не и частният ключ на сървъра).

След като направите това, можете да опитате да видите дали сървърът е конфигуриран правилно, като използвате клиента на командния ред:

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

или може би това (въпреки че удостоверяването на сървърния сертификат наистина трябва да бъде активирано, за да бъде полезен SSL/TLS)

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

Това трябва да работи поне на командния ред.

След това от PHP получавате две опции:

  • използвайте mysqli_ssl_set както сте направили, но оставяте $key и $cert null, освен ако не искате да използвате клиентски сертификат, който наистина би трябвало да се различава от вашия сървърен сертификат. (Не мога да си спомня дали това работи.)
  • евентуално по-лесно, пропуснете mysqli_ssl_set напълно и конфигурирайте това във вашия глобален конфигурационен файл на MySQL клиент (където PHP трябва да може да го вземе, вероятно /etc/mysql/my.cnf , но това може да варира в зависимост от вашата дистрибуция):

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

(Това е подобно на конфигурацията на сървъра, но от страната на клиента/в клиентската секция.)

За частта за оторизация (GRANT ):

  • REQUIRE SSL изисква само използването на SSL/TLS
  • REQUIRE ISSUER , REQUIRE SUBJECT и REQUIRE X509 изисква от клиента да представи клиентски сертификат, за да се сравни с необходимите стойности (това е случаят, когато трябва да използвате ssl-key и ssl-cert от страна на клиента (config или в рамките на mysqli_ssl_set ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да заменя всеки друг екземпляр на конкретен символ в MySQL низ?

  2. Формат на датата на MySQL – това, което трябва да знаете

  3. Само променливи трябва да се предават чрез препратка в... на ред 13 Неуспешно

  4. Има ли значение ограничението за размера на VARCHAR?

  5. Изберете всички записи, които не отговарят на определени условия в обединена таблица