2015-06-26 2 views
0

Я пытаюсь подключиться к базе данных MySQL с помощью SSL с помощью сертификата клиента. Я создал доверенные сертификаты с сертификатом CA:Kettle, JDBC, MySQL, SSL: не удалось подключиться к базе данных

keytool -import -alias mysqlServerCACert -file ca.crt -keystore truststore 

Затем я создал хранилище ключей с моим секретным ключом и мой сертификатом клиента:

openssl pkcs12 -export -out bi.pfx -inkey bi.key -in bi.crt -certfile ca.crt 
openssl x509 -outform DER -in bi.pem -out bi.der 
keytool -importkeystore -file bi.der -keystore keystore -alias mysqlClientCertificate 

Я добавил UseSSL = верно и RequireSSL = верно JDBC URL-адрес и пройден

-Djavax.net.ssl.keyStore=${db.keyStore} 
-Djavax.net.ssl.keyStorePassword=${db.keyStore.pwd} 
-Djavax.net.ssl.trustStore=${db.trustStore} 
-Djavax.net.ssl.trustStorePassword=${db.keyStore.pwd} 

трансформация котла из окружающей среды. Я все еще получаю сообщение «Не удалось создать соединение с сервером базы данных».

Я могу подключиться через SSL с помощью инструмента командной строки:

mysql --protocol=tcp -h myqlhost -P 3309 -u bi -p --ssl=on --ssl-ca=ca.crt --ssl-cert=bi.crt --ssl-key=bi.key db_name 

Поэтому мой ток догадки, что это Ther проблемы с SSL-сертификатами.

Есть ли способ заставить MySQL JDBC Driver рассказать мне больше деталей, что пошло не так?

Является ли мое предположение неправильным, что параметры чайника могут использоваться для установки системных свойств? Как это сделать вместо этого?

+0

Где ваш код JDBC? Я вижу $ {...}. На самом деле не строка подключения JDBC. –

+0

@Norbert van Nobelin: Это переменные чайника, которые существуют в задании, задание передает их преобразованию в качестве параметров, как описано в моем вопросе. – cdonat

+0

Это строка подключения JDBC: jdbc: pdi: // hostname: port/kettle? Option = value & option = value То, что вы показываете в данный момент, еще недостаточно ясно: Какой язык является вашим кодом работы, вызывающим Java код в? можете ли вы передать свои переменные $ {...} в командную строку или журнал, чтобы узнать, содержат ли они правильную информацию? –

ответ

0

ОК, вот решение, что я нашел в настоящее время:

Стартовые скрипты для различных инструментов чайника передать параметры виртуальной машины Java, читая среды переменной «OPT». Поэтому я поставил

export OPT="-Djavax.net.ssl.keyStore=/path/to/keystore -Djavax.net.ssl.keyStorePassword=private -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=private" 

Теперь драйвер JDBC для MySQL находит свои сертификаты и закрытый ключ и может установить соединение.

0

Создание защищенного соединения (SSL) для AWS (RDS) Aurora/MySQL от Pentaho (PDI Kettle)

1. You need to create a new user id and Grant SSL rights to it. So this user id can connect to Aurora/MySQL only using Secured connection. 
GRANT USAGE ON *.* TO 'admin'@'%' REQUIRE SSL 
2. Download public RDS key (.pem fie) from AWS (http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html#Aurora.Overview.Security.SSL) 
3. Downloaded file contains certificates/keys for each region. 
4. Split certificates from .PEM file into different .PEM files 
5. Use JDK keytool command utility to import all these PEM files into a single truststore (xyz.jks) file 
    a. keytool -import -alias xyz.jks -file abc1.pem -keystore truststore 
6. Configure JNDI entry for your Aurora/MySQL instance in Pentaho Properties File "data-integration\simple-jndi\jdbc.properties" 
    a. Sample JNDI configuration 
    ------------------------------------------------------------------------- 
    RDSSecured/type=javax.sql.DataSource 
    RDSSecured/driver=com.mysql.jdbc.Driver 
    RDSSecured/user=admin 
    RDSSecured/password=password 
    RDSSecured/url=jdbc:mysql://REPLACE_WITH_RDS_ENDPOINT_HERE:3306/DATABASE_NAME?verifyServerCertificate=true&useSSL=true&requireSSL=true 
    ------------------------------------------------------------------------- 
7. Make sure you copied MySQL connector jar in "lib" directory of your pentaho installation. Use connector version 5.1.21 or higher. 
8. 
9. Create a copy of Spoon.bat/Spoon.sh based on your operating system E.g. Spoon_With_Secured_SSL_TO_RDS.bat or Spoon_With_Secured_SSL_TO_RDS.sh 
10. Now we need to pass the truststore details to Pentaho at startup, so edit the copied script and append below mentioned arguments to OPT variable 
    a. -Djavax.net.ssl.trustStore="FULL_PATH\xyz.jks" 
    b. -Djavax.net.ssl.trustStorePassword="YOUR_TRUSTSTORE_PASSWORD" 
11. Use new script to start Spoon here after to establish the secure connection 
12. Open/create your Job/Transformation 
13. Go To View Tab - Database Connections and create new connection 
    a. Connection Type: MySQL 
    b. Access: JNDI 
    c. JNDI Name: RDSSecured 
     i. Same as name used in JDBC.properties file 
14. Test Connection and you are ready…. :) 
Смежные вопросы