Подтвердить что ты не робот

Java использует SSL для подключения к базе данных

В настоящее время я подключаюсь к своей базе данных без использования SSL. Теперь я хочу использовать SSL. Как я его настроил, мой источник базы данных находится в config.

DB_SOURCE=jdbc:mysql://myDatabaseInfo:3306/DB_NAME?
DB_USER=dbUser
DB_PW=dbPw

Я могу заставить SSL-соединение работать, вызывая мою программу со следующими аргументами

-Djavax.net.ssl.trustStore=path\to\truststore
-Djavax.net.ssl.trustStorePassword=myPassword

Я также могу заставить его работать, изменяя переменные env в самом коде

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); 

Однако моя цель - сделать SSL-соединение без внесения каких-либо изменений в мой код и без необходимости изменять аргументы VM, которые я использую. Есть ли способ, которым я могу указать источник, чтобы включить эту информацию?

Что-то вроде:

jdbc:mysql://myDatabaseInfo:3306/DB_NAME?useSSL=true&trustCertificateKeyStoreUrl=path\to\truststore&trustCertificateKeyStorePassword=myPassword

Я пробовал это точно, и он не работает, в идеале я мог бы просто добавить информацию в конфигурацию, которую у меня уже есть, чтобы мне не приходилось вносить изменения в несколько мест. Любые идеи?

4b9b3361

Ответ 1

Предложение 1: разместить хранилище доверенных сертификатов вместо хранилища доверия Java или импортировать сертификат в хранилище доверия java: ${java.home}/lib/security/cacerts

Предложение 2: Напишите свой собственный драйвер, расширяющий com.mysql.jdbc.Driver. Поместите конфигурацию SSL в новый код. Хотя вам нужно кодировать, но не в основном приложении. Не уверен, что это приемлемо для вас.

Ответ 2

Согласно разделу безопасности документации MySQLConnector, trustCertificateKeyStoreUrl принимает входной URL.

То есть вы должны префикс его с помощью file:, чтобы заставить его работать для локальных файлов. Другими словами, вам нужно установить путь к вашему доверенному хранилищу как file:path\to\truststore.

То же самое относится к clientCertificateKeyStoreUrl, если вы тоже используете этот параметр.