Próbuję skonfigurować ostatnią wersję MongoDB z szyfrowaniem SSL, udało mi się połączyć z powłoki mongo, ale dostaję błąd, gdy łączę się z Javy Klient.Nie można połączyć się z JAVA do zestawu replik SSL Mongo
Works
Mongo Administrator --host mongo1.xxxx.com --ssl --sslPEMKeyFile mongoClient.pem --sslCAFile mongoCA.crt
Nie działa
public static void main(String args[]){
System.setProperty("javax.net.ssl.trustStore","/home/gasparms/truststore.ts");
System.setProperty("javax.net.ssl.trustStorePassword", "mypasswd");
System.setProperty("javax.net.ssl.keyStore", "/home/gasparms/truststore.ts");
System.setProperty("javax.net.ssl.keyStorePassword", "mypasswd");
System.setProperty("javax.security.auth.useSubjectCredsOnly","false");
MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true)
.build();
MongoClient mongoClient = new MongoClient("mongo1.xxxx.com",options);
System.out.println(mongoClient.getDatabaseNames());
}
Otrzymuję ten błąd od strony Mongo:
2015-06-09T15: 08: 14.431ZI NETWORK [initandlisten] połączenie akceptowane od 192.168.33.1:38944 # 585 (3 połączenia teraz otwarte) 2015-06-09T15: 08: 14.445ZE SIEĆ [conn585] brak SSL certyfikat dostarczony przez równorzędnego; połączenie odrzucone 2015-06-09T15: 08: 14.445ZI NETWORK [conn585] koniec połączenia 192.168.33.1:38944 (2 połączenia teraz otwarte) 2015-06-09T15: 08: 14.828ZI NETWORK [conn580] koniec połączenia 192.168. 33.13: 39240 (1 gra teraz otwarty)
aw programie klienckim java
información: Wyjątek w wątku monitora podczas łączenia się z serwerem mongo1.xxxx.com:27017 com.mongodb.MongoSocketReadException: Przedwcześnie osiągnięty koniec strumienia pod numerem com.mongodb.connection.So cketStream.read (SocketStream.java:88) w com.mongodb.connection.InternalStreamConnection.receiveResponseBuffers (InternalStreamConnection.java:491) w com.mongodb.connection.InternalStreamConnection.receiveMessage (InternalStreamConnection.java:221) w com.mongodb.connection.CommandHelper.receiveReply (CommandHelper.java:134) w com.mongodb.connection.CommandHelper.receiveCommandResult (CommandHelper.java:121) w com.mongodb.connection.CommandHelper.executeCommand (CommandHelper. java: 32) pod adresem com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription (InternalStreamConnectionInitializer.java:83) na com.mongodb.connection.InternalStreamConnectionInitializer.initialize (InternalStreamConnectionInitializer.java:43) na com.mongodb.connection.InternalStreamConnection.open (InternalStreamConnection.java:115) w com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable .run (DefaultServerMonitor.java:127) w java.lang.Thread.run (Thread.java:745)
tworzenia certyfikatów
mam mongoCA.crt i mongoClient.pem że w orki z powłoką mongo. Następnie chcę zaimportować .pem i .crt do kluczy java
openssl x509 -outform der -in certificate.pem -out certificate.der
keytool -import -alias MongoDB-Client -file certificate.der -keystore truststore.ts -noprompt -storepass "mypasswd"
keytool -import -alias "MongoDB-CA" -file mongoCA.crt -keystore truststore.ts -noprompt -storepass "mypasswd"
Co robię źle?
Czy jesteś pewien, że serwer działa z włączonym ssl? Spróbuj połączyć się bez żadnej konfiguracji ssl (przez sterownik cli/shell i java), aby zweryfikować. – evanchooly
Tak, mongo admin --host mongo1.xxxx.com --ssl --sslPEMKeyFile mongoClient.pem --sslCAFile mongoCA.crt działa, ale mongo admin --host mongo1.xxxx.com nie działa. Dziennik mówi, że nie jest możliwe połączenie – gasparms
Dokładnie mój problem. Czy masz rozwiązanie? – Nishant