2012-12-20 22 views
13

Şu anda SSL kullanmadan veritabanımla bağlantı yapıyorum. Şimdi SSL kullanmak istiyorum. Kurduğum gibi, veritabanı kaynağım yapılandırılmış durumda.Java, veritabanı bağlantısı için SSL kullan

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

ben de kod kendisi

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); 
yılında env değişkenleri değiştirerek işe alabilirsiniz

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

aşağıdaki argümanlarla programımı arayarak işe SSL bağlantısı alabilirsiniz

Ancak, amacım SSL bağlantısını kodumda herhangi bir değişiklik yapmadan ve kullanmakta olduğum VM argümanlarını değiştirmek zorunda kalmadan yapmaktır. Kaynağımı bu bilgileri içerecek şekilde ayarlamamın bir yolu var mı?

şey gibi:

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

Ben tam bu denenmiş ve ideal olarak ben sadece zaten daha değişiklik yapmak zorunda kalmamak var config bilgi eklemek olabilir, çalışmıyor tek bir yerden Herhangi bir fikir?

cevap

3

Öneri 1: java'nın güven mağazasının yerine güven deposu koymak veya java'nın güven deposuna sertifikanızı alın: ${java.home}/lib/security/cacerts

Öneri 2: Kendi sürücü com.mysql.jdbc.Driver uzanan yaz. SSL yapılandırmasını yeni koda yerleştirin. Her ne kadar kod yazmanız gerekiyorsa da, ana uygulamada değil. Sizin için kabul edilebilir olup olmadığından emin değilsiniz.

+0

# 1 ile ilgili olarak, yalnızca güven deposunun yerini kaplayan, parola ayarlamak için VM argümanına hala ihtiyacım var, hayır? – Marianna

+0

Sertifikaları java'nın varsayılan güven deposuna aktarırsanız, parolayı ayarlamanıza gerek yoktur. 'Değişim' :) – Tarlog

0

MySQLConnector documentation'un güvenlik bölümüne göre, trustCertificateKeyStoreUrl bir URL girişi olarak alır. Yerel dosyalar için çalışabilmesi için file: ile önek yapmanız gerekir. Başka bir deyişle, güvencenin yolunu file:path\to\truststore olarak ayarlamanız gerekir.

Aynı şey, bu parametreyi de kullanıyorsanız, clientCertificateKeyStoreUrl için de geçerlidir.

İlgili konular