Tôi đã cấu hình SSL cho MySQL bằng cách sử dụng tập lệnh sau.
#!/bin/bash
#
mkdir -p /root/abc/ssl_certs
cd /root/abc/ssl_certs
#
echo "--> 1. Create CA cert, private key"
openssl genrsa 2048 > ca-key.pem
echo "--> 2. Create CA cert, certificate"
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
echo "--> 3. Create Server certificate, key"
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
echo "--> 4. Create Server certificate, cert"
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
echo ""
echo
echo ""
echo "--> 5. Create client certificate, key. Use DIFFERENT common name then server!!!!"
echo ""
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
echo "6. Create client certificate, cert"
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
exit 0
Các tệp sau đây đã được tạo:
ca-key.pem ca-cert.pem
server-req.pem server-key.pem server-cert.pem
client-req.pem client-key.pem client-cert.pem
Sau đó, tôi đã kết hợp server-cert.pem và client-cert.pem vào ca.pem (Tôi đã đọc trong một bài đăng để làm như vậy ..)
Tôi đã tạo một người dùng ssl trong MySQL:
GRANT ALL ON *.* to sslsuer@hostname IDENTIFIED BY 'pwd' REQUIRE SSL;
Tiếp theo tôi đã thêm vào như sau trong my.cnf
[mysqld]
ssl-ca = /root/abc/ssl_certs/ca.pem
ssl-cert = /root/abc/ssl_certs/server-cert.pem
ssl-key = /root/abc/ssl_certs/server-key.pem
Sau khi khởi động lại máy chủ, tôi đã kết nối với mysql nhưng SSL vẫn không được sử dụng :(
mysql -u ssluser -p
SSL: Not in use
Ngay cả tham số have_ssl vẫn hiển thị bị tắt .. :(
mysql> show variables like '%ssl%';
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | /root/abc/ssl_certs/ca.pem |
| ssl_capath | |
| ssl_cert | /root/abc/ssl_certs/server-cert.pem |
| ssl_cipher | |
| ssl_key | /root/abc/ssl_certs/server-key.pem |
+---------------+---------------------------------------------+
Tôi đã bỏ lỡ bất kỳ bước nào, hoặc có gì sai ..
Câu trả lời với các bước bị bỏ lỡ chi tiết sẽ được đánh giá cao ..
mysql --ssl --help
Cũng đừng quên khởi động lại mysql sau khi thực hiện các sửa đổi đó đối với my.cnf
mysql --ssl -u ssluser -p
ép SSL trên máy khách. Sau đó, người ta có thể xác định lý do tại sao REQuIRE SSL không.