Trong cấu hình này, các thông báo cảnh báo sau có thể xuất hiện nếu bạn đang sử dụng MySQL cao hơn 5. 5. 45+, 5. 6. 26+ và 5. 7. 6+
Không nên thiết lập kết nối SSL mà không có xác minh danh tính của máy chủ. Theo MySQL5. 5. 45+, 5. 6. 26+ và 5. 7. Hơn 6 yêu cầu Kết nối SSL phải được thiết lập theo mặc định nếu tùy chọn rõ ràng không được đặt. Để tuân thủ các ứng dụng hiện có không sử dụng SSL, thuộc tính verifyServerCertificate được đặt thành 'false'. Bạn cần tắt SSL một cách rõ ràng bằng cách đặt useSSL=false hoặc đặt useSSL=true và cung cấp cửa hàng tin cậy để xác minh chứng chỉ máy chủ
1] Chạy lệnh sau để xác nhận rằng SSL không được bật trên MySQL
mysql> show global variables like '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | .. | .. |
2] Chạy các lệnh sau để tạo khóa Tổ chức phát hành chứng chỉ [CA]
mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
3] Chạy các lệnh sau để tạo chứng chỉ và khóa SSL máy chủ
Nếu bạn đang tạo chứng chỉ để sử dụng với MySQL, hãy đảm bảo rằng bạn chuyển đổi khóa RSA sang định dạng PKCS #1 PEM truyền thống và chứng chỉ đó đang sử dụng thông báo SHA1
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem
4] Cập nhật quyền sở hữu thư mục chứng chỉ, tệp và quyền cập nhật
chown -R mysql:mysql /etc/mysql
5] Cập nhật tệp cấu hình của MySQL /etc/my. cnf. Bao gồm phần này trong phần [mysqld]
[mysqld] ssl-ca = /etc/mysql/ca-cert.pem ssl-cert = /etc/mysql/server-cert.pem ssl-key = /etc/mysql/server-key.pem
6] Xác định vị trí và nhận xét trong /etc/my. cnf
7] Kích hoạt biến để bắt buộc khách hàng phải kết nối bằng kết nối được mã hóa
[mysqld] # Require clients to connect either using SSL # or through a local socket file require_secure_transport = ON
8] Khởi động lại dịch vụ/máy chủ mysql
9] Đăng nhập vào MySQL và xác thực rằng ssl đã được bật cho MySQL
mysql -u root -p --ssl-mode=required
mysql> show global variables like '%ssl%'; +---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysql/ca-cert.pem | | ssl_capath | | | ssl_cert | /etc/mysql/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | /etc/mysql/server-key.pem | +---------------+----------------------------+
10] Và kiểm tra trạng thái
________số 8_______Nếu SSL không được bật, hãy tìm manh mối xem liệu MySQL có gặp sự cố khi tải chứng chỉ hay không
11] Cập nhật người dùng cơ sở dữ liệu Cổng để yêu cầu SSL
Các lệnh sau buộc tất cả các kết nối sử dụng SSL bất kể những gì được đặt trong cấu hình Cổng. Nó phải khớp với những gì được đặt ở đây [cho dù SSL được bật hay tắt cho người dùng db Cổng]
mysql> UPDATE mysql.user SET ssl_type = 'ANY' WHERE user = 'gateway'; mysql> FLUSH PRIVILEGES;
0mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
13] Chạy lệnh sau để xác minh rằng MySQL chỉ chấp nhận các kết nối SSL. Đảm bảo rằng máy khách MySQL không kết nối với máy chủ MySQL
1mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
14] Thêm phần sau vào nút của Cổng. của cải. Điều này sẽ cho phép các kết nối Hibernate sử dụng SSL
2mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
Việc thiết lập có thể dẫn đến cảnh báo trong nhật ký SSG
3mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
Xem phần tiếp theo để bật Xác thực chứng chỉ máy chủ. Sau khi được bật, các thông báo cảnh báo ở trên không xuất hiện nữa
Thiết lập MySQL SSL với Xác thực chứng chỉ máy chủ
Chứng chỉ được ký bởi CA đáng tin cậy
Không cần cấu hình bổ sung đối với các chứng chỉ được thực hiện liên quan đến xác thực máy chủ. Java xác minh chứng chỉ máy chủ bằng các chứng chỉ CA đáng tin cậy mặc định của nó, thường là từ $Java_HOME/lib/security/cacertsSử dụng chứng chỉ tự ký
Để xác minh chứng chỉ máy chủ, khách hàng cần đọc được chứng chỉ đã ký nó--chứng chỉ máy chủ đã tự ký hoặc chứng chỉ CA tự ký1] Nhập chứng chỉ vào tệp kho tin cậy Java tùy chỉnh và định cấu hình trình điều khiển máy khách tương ứng, hãy làm theo các bước sau
2] Từ nút chứa ca-cert. pem, tạo một kho tin cậy và nhập Chứng chỉ CA từ bước trước đã được sử dụng để tự ký chứng chỉ máy chủ MySQL
4mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
3] Chạy lệnh sau để xác minh Chứng chỉ CA có trong cửa hàng ủy thác
5mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
4] Sao chép cửa hàng ủy thác. jks tới tất cả các nút sẽ kết nối với MySQL /etc/mysqlclient
5] Thay đổi quyền của tệp JKS
6mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
6] Thêm các dòng sau vào tệp
7mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
Chứng chỉ máy chủ hiện đã được xác thực và các thông báo cảnh báo không còn hiển thị nữa
Cả máy chủ chính và máy chủ phụ phải hỗ trợ các kết nối mạng được mã hóa để có thể sử dụng các kết nối được mã hóa để truyền nhật ký nhị phân được yêu cầu trong quá trình sao chép. Nếu một trong hai máy chủ không hỗ trợ kết nối được mã hóa thì không thể sao chép thông qua kết nối được mã hóa
Thiết lập kết nối được mã hóa để sao chép tương tự như quy trình được thực hiện cho kết nối máy khách/máy chủ. Tạo hoặc lấy chứng chỉ bảo mật phù hợp mà bạn có thể sử dụng trên máy chủ và chứng chỉ tương tự từ cùng một tổ chức phát hành chứng chỉ trên mỗi nô lệ cùng với các tệp khóa phù hợp
Làm theo các bước sau trên cả hai nút MySQL vì Cổng sử dụng bản sao MASTER-MASTER
1] Chạy các lệnh sau để tạo chứng chỉ và khóa SSL máy khách
8mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
2] Cập nhật tệp cấu hình của MySQL /etc/my. cnf để bao gồm các chứng chỉ ứng dụng khách trong phần [máy khách]
9mkdir /etc/mysql cd /etc/mysql openssl genrsa 2048 > ca-key.pem openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
3] Khởi động lại dịch vụ/máy chủ mysql
4] Cập nhật người dùng sao chép Cổng để yêu cầu SSL
Các lệnh sau buộc tất cả các kết nối sử dụng SSL bất kể những gì được đặt trong cấu hình sao chép. Nó phải phù hợp với những gì được đặt ở đây [cho dù SSL được bật hay tắt cho người dùng sao chép].
0openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem
5] Khởi động lại nô lệ bằng các lệnh sau
1openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem
6] Kiểm tra trạng thái bằng lệnh sau
2openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem
7] Khởi động lại bản sao nếu bạn thấy lỗi khi kết nối với Bản chính
Kết nối với Cơ sở dữ liệu MySQL Yêu cầu TLS v1. 2
Một số cơ sở dữ liệu MySQL hỗ trợ SSL/TLS có thể bị hạn chế chỉ cho phép TLS v. 1. 2 khi các máy khách như Cổng đang kết nối với nó như một phần của yêu cầu bảo mật. Trình điều khiển cơ sở dữ liệu được sử dụng bởi Cổng có thể đưa ra một số giả định về cơ sở dữ liệu bên ngoài mà nó đang kết nối và giới hạn phiên bản TLS thành TLS v1. 1. Đây là trường hợp đặc biệt đối với cơ sở dữ liệu MySQL không đi kèm với Cổng [e. g. , cơ sở dữ liệu MySQL dựa trên đám mây như AWS Aurora]
Do sự khác biệt trong việc chấp nhận phiên bản TLS giữa máy khách Gateway và cơ sở dữ liệu MySQL, điều này có thể dẫn đến kết nối cơ sở dữ liệu không thành công
Có hai vị trí chính trong Cổng mà các phiên bản TLS có thể được định cấu hình và thực thi, tùy thuộc vào loại kết nối. nút. tệp thuộc tính và công cụ Quản lý kết nối JDBC trong Trình quản lý chính sách
Thực thi TLS v1. 2 trong nút. của cải
nút. tập tin thuộc tính được đặt trong
/opt/SecureSpan/Gateway/node/default/etc/conf/
Khi Gateway khởi động, nút. các thuộc tính được sử dụng một phần để bắt đầu kết nối với cơ sở dữ liệu MySQL. Để đảm bảo rằng mọi kết nối cơ sở dữ liệu đều sử dụng TLS v1. 2, thêm dòng sau vào nút. tệp thuộc tính.
3openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem
Thực thi TLS v1. 2 trong Quản lý kết nối JDBC [Trình quản lý chính sách]
Nếu chính sách hoặc dịch vụ web của bạn hiện đang sử dụng xác nhận Thực hiện Truy vấn JDBC và Cổng không cung cấp TLS v1. 2 trong khi thử kết nối với cơ sở dữ liệu MySQL yêu cầu TLS v1. 2, đảm bảo rằng URL JDBC được thêm vào thuộc tính và giá trị sau.
4openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem openssl rsa -in server-key.pem -out server-key.pem