mba12 Tôi đã gặp vấn đề tương tự, cảm ơn vì câu trả lời!
Vì vậy, giải pháp là ở đây (như bạn đã chỉ ra): Cách kết nối với MySQL với X509 bằng JDBC?
Tôi cũng tìm thấy cái này: nhập chứng chỉ x509 hiện có và khóa cá nhân trong kho khóa Java để sử dụng trong ssl
Chỉ để làm rõ
javax.net.ssl.keyStore
phải là chứng chỉ ứng dụng khách + khóa được kết hợp, không chỉ chứng chỉ ứng dụng khách như được mô tả trong hướng dẫn MySQL.
Tóm tắt
- Chúng tôi có:
server-ca.pem
- Chứng chỉ MySQL CA, có thể được tải xuống từ "Cấu hình SSL -> Xem Chứng chỉ CA của Máy chủ"
client-cert.pem
- khóa công khai của ứng dụng khách, có thể được tải xuống từ "Chứng chỉ ứng dụng -> chứng chỉ mới được tạo"
client-key.pem
- khóa riêng của ứng dụng khách, chỉ có thể được tải xuống từ "Hộp thoại được tạo Chứng chỉ SSL mới"
Được mô tả tại đây: https://cloud.google.com/sql/docs/ config-ssl-instance
Hãy lưu chúng trong server-instance / thư mục và tạo jks / thư mục cho các tệp đã tạo ở bước 2.
-
Tạo
truststore
tệp2.1. Sao chép
cacerts
của JAVA gốc tớijks/truststore.jks
:cp $JAVA_HOME/jre/lib/security/cacerts jks/truststore.jks
2.2. Thêm chứng chỉ MySQL Server CA / Google Cloud SQL Server CA
server-ca.pem
đến kho tin cậy mặc định của JAVAcacerts
mà chúng tôi đã sao chép ở bước 2.1.:keytool -importcert -noprompt -trustcacerts -keystore jks/truststore.jks -storepass changeit -alias googlecloudsqlservercacert -file server-instance/server-ca.pem
-
Tạo
keystore
tệp3.1. Chuyển đổi chứng chỉ x509 và khóa cá nhân thành tệp pkcs12:
openssl pkcs12 -export -in server-instance/client-cert.pem -inkey server-instance/client-key.pem -out jks/client.p12
(nhập mật khẩu bắt buộc), ví dụ:
p4ssw0rd
3.2. Chuyển đổi tệp pkcs12 thành kho khóa java:
keytool -importkeystore -srckeystore jks/client.p12 -srcstoretype PKCS12 -destkeystore jks/keystore.jks -deststoretype JKS
(nhập cùng một mật khẩu), ví dụ:
p4ssw0rd
Giới thiệu về chuyển đổi: http://blog.ejbca. org / 2008/02 / convert-keystores-between-jks-and.html