Я использую MongoDB 2.6.3 с подключением SSL.
Я не использую проверку клиента, а конфигурация SSL следующая:
sslMode = requireSSL
sslPEMKeyFile = /path/to/MyServerCertificate.pem
Сертификат, который я использую, подписан и выдан моему серверу ЦС, у которого есть корневой ЦС, например:
RootCA ---> SignerCA ---> MyServerCertificate
Проблема в следующем: я пытаюсь подключиться через java, указав хранилище доверия с только SignerCA, и все работает нормально. Но когда я указываю хранилище доверия с только RootCA, я получаю:
com.mongodb.MongoServerSelectionException: невозможно подключиться к любому серверу
В журнале монго я вижу:
ОШИБКА: SSL: ошибка: 14094416: процедуры SSL: SSL3_READ_BYTES: сертификат предупреждения sslv3 неизвестен
Мой Java-код:
Builder options = MongoClientOptions.builder();
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("path/to/keystore"), "pass".toCharArray());
TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(ks);
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustFactory.getTrustManagers(), null);
options.socketFactory(sc.getSocketFactory());
new MongoClient("loclahost", options.build());
Когда хранилище ключей, которое я использую, содержит только RootCA, я не могу подключиться по какой-то причине...
Буду рад предложениям. Спасибо.