Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết nối SSL từ PHP đến MySQL

Đây PHP (và mysqli_real_connect ) là máy khách không phải máy chủ. Bạn đang định cấu hình nó bằng mysqli_ssl_set để xác thực chứng chỉ ứng dụng khách (và sử dụng khóa máy chủ và chứng chỉ).

Tôi không chắc bạn đã định cấu hình máy chủ MySQL của mình như thế nào, nhưng sẽ có một cái gì đó như thế này trong phần máy chủ (MySQL) của cấu hình:

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

Những thứ này dù sao cũng không thuộc về phía máy khách (chỉ có chứng chỉ CA mới có, nhưng chắc chắn không phải là khóa riêng của máy chủ).

Sau khi thực hiện xong việc này, bạn có thể thử xem máy chủ có được định cấu hình đúng cách hay không bằng ứng dụng khách dòng lệnh:

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

hoặc có lẽ điều này (mặc dù chứng chỉ máy chủ xác minh thực sự nên được bật để SSL / TLS hữu ích)

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

Điều này sẽ hoạt động ít nhất trên dòng lệnh.

Sau đó, từ PHP, bạn nhận được hai tùy chọn:

  • sử dụng mysqli_ssl_set như bạn đã làm, nhưng vẫn để lại $key$cert null, trừ khi bạn muốn sử dụng chứng chỉ máy khách thực sự phải khác với chứng chỉ máy chủ của bạn. (Tôi không thể nhớ liệu cách đó có hiệu quả hay không.)
  • có thể dễ dàng hơn, bỏ qua mysqli_ssl_set hoàn toàn và định cấu hình điều này trong tệp cấu hình máy khách MySQL toàn cầu của bạn (nơi PHP có thể lấy nó, có thể là /etc/mysql/my.cnf , nhưng điều này có thể khác nhau tùy thuộc vào phân phối của bạn):

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

(Điều này tương tự với cấu hình máy chủ, nhưng ở phía máy khách / trong phần máy khách.)

Đối với phần ủy quyền (GRANT ):

  • REQUIRE SSL chỉ yêu cầu sử dụng SSL / TLS
  • REQUIRE ISSUER , REQUIRE SUBJECTREQUIRE X509 yêu cầu ứng dụng khách xuất trình chứng chỉ ứng dụng khách để so sánh với các giá trị bắt buộc (đó là trường hợp bạn cần sử dụng ssl-keyssl-cert ở phía máy khách (cấu hình hoặc trong 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:Cách đơn giản để chuyển đổi giá trị của một trường int

  2. Vị trí mySQL my.ini

  3. Kết nối với Nguồn dữ liệu MySQL trong PHPStorm

  4. Làm thế nào để cấp quyền truy cập từ xa vào máy chủ mysql cho người dùng?

  5. Phát hiện biểu tượng cảm xúc trong chuỗi