Mysqli_real_connect SSL

Bây giờ bạn có thể mã hóa các kết nối giữa PHP và MySQL. Thông thường, MySQL thực hiện tất cả các giao tiếp bằng văn bản thuần túy vì đó là cách nhanh nhất để gửi dữ liệu. Tuy nhiên, Mysql 4. 0 cho phép bạn sử dụng mã hóa SSL để ngăn mọi người theo dõi lưu lượng truy cập giữa PHP và MySQL và MySQL 4. 1 mở rộng điều này để bao gồm sao chép qua SSL

Phiên bản MySQL hỗ trợ SSL không yêu cầu bạn sử dụng SSL cho tất cả các kết nối của mình. Bạn có thể đặt các cấp độ quyền khác nhau trên tài khoản của mình, vì vậy bạn có thể đặt các hạn chế khác nhau khi thấy phù hợp. Đối với một số tài khoản, bạn có thể không muốn gặp rắc rối khi xử lý SSL và xác thực

Sau khi tất cả các hệ thống của bạn được định cấu hình, việc sử dụng SSL với MySQLi khá dễ dàng. Bắt đầu và chạy mọi thứ có thể hơi khó khăn vì bạn cần thêm hỗ trợ OpenSSL cho cả MySQL và PHP, tạo chứng chỉ SSL cho MySQL, đồng thời định cấu hình đúng các tệp cấu hình và tài khoản người dùng MySQL của bạn

Đây là danh sách những việc bạn cần làm

  1. Cài đặt OpenSSL nếu hệ thống của bạn chưa có

  2. Thêm hỗ trợ SSL vào MySQL và cài đặt lại

  3. Thêm hỗ trợ SSL vào PHP, liên kết với máy khách MySQL mới và cài đặt lại

  4. Tạo chứng chỉ SSL cho máy chủ MySQL

  5. Thêm thông tin chứng chỉ SSL vào tài khoản của tôi. tập tin cnf

  6. Khởi động lại MySQL

  7. Chỉnh sửa bảng GRANT của MySQL để yêu cầu SSL

  8. Kết nối với MySQL từ PHP bằng SSL

Trước khi bạn có thể làm bất cứ điều gì, bạn cần có OpenSSL trên máy của mình. Hầu hết các hệ thống đều được cài đặt sẵn OpenSSL, nhưng bạn có thể tải xuống một bản sao từ http. //www. opensl. tổ chức/

Bước thứ hai là kiểm tra xem máy chủ MySQL của bạn đã hỗ trợ SSL chưa. Ban hành lệnh sau

SHOW VARIABLES LIKE 'have_openssl';

Nếu nó trả về CÓ, bạn thật may mắn; . Sửa đổi cấu hình trước đó của bạn để thêm --with-openssl và --with-vio. [Nếu bạn đã tải xuống gói MySQL dựng sẵn, bạn sẽ cần tải xuống nguồn MySQL và làm theo hướng dẫn cài đặt. ] Sau khi bạn đã xây dựng lại MySQL, hãy cài đặt nó

Bây giờ hãy thêm OpenSSL vào PHP và nhận mysqli để kích hoạt hỗ trợ SSL của nó. Điều này được thực hiện bằng cách thêm tùy chọn cấu hình --with-openssl vào PHP. Ngay cả khi bản sao PHP của bạn đã có hỗ trợ SSL, bạn vẫn phải làm lại PHP nếu máy chủ MySQL của bạn không hỗ trợ SSL khi bạn xây dựng PHP ban đầu. Khi bạn hoàn tất, hãy tiếp tục và cài đặt lại PHP, khởi động lại máy chủ web của bạn nếu cần

Mặc dù hiện tại cả PHP và MySQL đều có hỗ trợ SSL, điều này không có nghĩa là chúng sẽ tự động sử dụng nó. Trước khi điều này có thể xảy ra, bạn cần tạo chứng chỉ SSL cho MySQL. xem http. // nhà phát triển. mysql. com/doc/mysql/en/Secure_create_certs. html để biết hướng dẫn từng bước nếu bạn chưa quen với OpenSSL và các chứng chỉ

Sau khi chứng chỉ được tạo, hãy thêm thông tin chứng chỉ SSL vào tệp my. tập tin cnf. Điều này cho phép MySQL tải trong cài đặt cấu hình khi khởi động. Đây là một ví dụ

[client]

ssl-ca=/usr/local/mysql/openssl/cacert.pem

ssl-cert=/usr/local/mysql/openssl/client-cert.pem

ssl-key=/usr/local/mysql/openssl/client-key.pem

[mysqld]

ssl-ca=/usr/local/mysql/openssl/cacert.pem

ssl-cert=/usr/local/mysql/openssl/server-cert.pem

ssl-key=/usr/local/mysql/openssl/server-key.pem

Điều này thêm các tệp khóa, chứng chỉ và tổ chức phát hành chứng chỉ [CA] vào MySQL. Bạn cũng có thể đặt tên đường dẫn cho chứng chỉ SSL CA đáng tin cậy bằng cách sử dụng tùy chọn cấu hình ssl-capath và cung cấp danh sách mật mã bằng cách sử dụng mật mã ssl

Bước tiếp theo là khởi động lại máy chủ MySQL. Biến have_openssl bây giờ sẽ là CÓ

Bây giờ, toàn bộ nền tảng đã hoàn tất và bạn đã sẵn sàng bắt buộc kết nối SSL cho người dùng của mình. MySQL cho phép bạn xử lý việc này trên cơ sở từng người dùng với các bảng GRANT của nó, vì bạn có thể muốn cho phép một số người dùng cục bộ tạo các kết nối không được mã hóa. Để yêu cầu kết nối SSL cơ bản, hãy thêm YÊU CẦU SSL vào cuối câu lệnh GRANT của bạn. Ví dụ

GRANT ALL PRIVILEGES ON users.* TO 'ssl-user'@'localhost' 

  IDENTIFIED BY 'password' REQUIRE SSL;

Trang web tại http. // nhà phát triển. mysql. com/doc/mysql/en/Secure_GRANT. html bao gồm tất cả các cách khác nhau mà bạn có thể khiến MySQL thực thi kết nối SSL và cung cấp một số lệnh GRANT mẫu bổ sung

Mọi thứ đã hoàn tất và bạn đã sẵn sàng tạo kết nối SSL từ PHP bằng mysqli. Điều này có thể được thực hiện theo hai cách khác nhau, nhưng cả hai phương pháp đều yêu cầu bạn sử dụng mysqli_real_connect[ ]

Cách dễ nhất là đọc cài đặt SSL từ tài khoản của tôi. tập tin cnf

$db = mysqli_init[ ];

mysqli_options[$db, MYSQLI_READ_DEFAULT_FILE, '/etc/my.cnf'];

mysqli_real_connect[$db, 'localhost', 'ssl-user', 'password', 'database'];

Tùy chọn MYSQLI_READ_DEFAULT_FILE buộc MySQL phải đọc nội dung của nhóm máy khách trong /etc/my. cnf. Điều này cho phép bạn đặt tất cả các tùy chọn SSL của mình ở một nơi duy nhất và sử dụng chúng từ PHP, công cụ dòng lệnh mysql hoặc các chương trình khác

Bạn cũng có thể chỉ định các tùy chọn bằng cách sử dụng mysqli_ssl_set[]

$db = mysqli_init[ ];

mysqli_ssl_set[$db, '/usr/local/mysql/openssl/server-key.pem', 

                    '/usr/local/mysql/openssl/server-cert.pem', 

                    '/usr/local/mysql/openssl/cacert.pem',

                     NULL,

                     NULL];

mysqli_real_connect[$db, 'localhost', 'ssl-user', 'password', 'database'];

Hàm mysqli_ssl_set[] nhận sáu đối số. Đầu tiên là liên kết cơ sở dữ liệu và năm mục tiếp theo là khóa SSL, chứng chỉ, chứng chỉ CA, đường dẫn CA và mật mã. Nếu phương thức mã hóa của bạn không yêu cầu một hoặc nhiều tham số này, hãy chuyển NULL vào vị trí của chúng

Hàm này luôn trả về true. Lỗi SSL được báo cáo khi bạn thực hiện kết nối thực tế với MySQL

Việc sử dụng mysqli_ssl_set[ ] sẽ ghi đè bất kỳ biến nào được đặt bằng tùy chọn MYSQLI_READ_DEFAULT_FILE, do đó, bạn vẫn có thể đọc tệp cấu hình cho các cài đặt chung nhưng hãy thay đổi thông tin SSL của mình nếu cần

Cả hai kỹ thuật đều tự động đặt cờ MYSQLI_SSL_CLIENT, vì vậy bạn không cần thêm cờ này vào lệnh gọi mysqli_real_connect[ ]

Làm cách nào để kết nối từ WordPress với MySQL bằng SSL?

tệp php cài đặt WordPress của bạn. // Trong wp-config. php, thêm. define['MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL]; Lúc này, WordPress sẽ kết nối với máy chủ MySQL thông qua kết nối SSL.

SSL trong PHP là gì?

Lớp cổng bảo mật [SSL] cung cấp một kênh bảo mật mà qua đó các yêu cầu và phản hồi HTTP thông thường có thể truyền đi . PHP không đặc biệt quan tâm đến SSL, vì vậy bạn không thể kiểm soát mã hóa theo bất kỳ cách nào từ PHP. https. // URL cho biết kết nối an toàn cho tài liệu đó, không giống như http. // URL.

Chủ Đề