Tôi hiện đang tạo kết nối với cơ sở dữ liệu của mình mà không cần sử dụng SSL. Bây giờ tôi muốn sử dụng SSL. Cách tôi đã thiết lập nó, là nguồn cơ sở dữ liệu của tôi là trong cấu hình.SSL sử dụng Java để kết nối cơ sở dữ liệu
DB_SOURCE=jdbc:mysql://myDatabaseInfo:3306/DB_NAME?
DB_USER=dbUser
DB_PW=dbPw
tôi có thể nhận được kết nối SSL để làm việc bằng cách gọi chương trình của tôi với các đối số sau
-Djavax.net.ssl.trustStore=path\to\truststore
-Djavax.net.ssl.trustStorePassword=myPassword
Tôi cũng có thể lấy nó để làm việc bằng cách thay đổi các biến env trong mã bản thân
dbSource += "?useSSL=true";
System.setProperty("javax.net.ssl.trustStore", "path\to\truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "myPassword");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(dbSource, dbUser, dbPw);
Tuy nhiên, mục tiêu của tôi là tạo kết nối SSL mà không thực hiện bất kỳ thay đổi nào đối với mã của tôi và không phải thay đổi các đối số VM tôi sử dụng. Có cách nào tôi có thể đặt nguồn của mình để bao gồm thông tin này không?
Cái gì như:
jdbc:mysql://myDatabaseInfo:3306/DB_NAME?useSSL=true&trustCertificateKeyStoreUrl=path\to\truststore&trustCertificateKeyStorePassword=myPassword
Tôi cố gắng này chính xác và nó không hoạt động, lý tưởng tôi chỉ có thể thêm các thông tin để cấu hình tôi đã có vì vậy mà tôi không cần phải thực hiện thay đổi trong hơn hơn một nơi. Bất kỳ ý tưởng?
Về số 1, chỉ bao gồm vị trí của cửa hàng tin cậy, tôi vẫn cần đối số VM để đặt mật khẩu, không? – Marianna
Nếu bạn nhập chứng chỉ vào kho lưu trữ tin cậy mặc định của java, bạn không cần phải đặt mật khẩu. Đó là 'thay đổi' :) – Tarlog