aws / aws/amazon-documentdb-jdbc-driver

[BUG] java.security.KeyStoreException: KeychainStore not found - broken since v1.4.2

Open
#573 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
17
Forks
16
PR merge metrics
No merged PRs in 30d

Description

## Environment
- DocumentDB JDBC driver version: 1.4.2, 1.4.3, 1.4.4, 1.4.5
- DocumentDB server version: 5.0.0
- OS: MacOS Ventura 13.6.7
- BI Tool or client name: dbeaver
- BI Tool or client version: 24.1.3
- Java version (if known): OpenJDK 17.0.6

---

## Problem Description
1. Steps to reproduce: Install Driver and try to test connection
2. Expected behaviour: successful connection
3. Actual behaviour:
4. Error message/stack trace:
5. 2024-07-24 22:17:43.262 - KeychainStore KeyStore not available
java.security.NoSuchAlgorithmException: KeychainStore KeyStore not available
at java.base/sun.security.jca.GetInstance.getInstance(Unknown Source)
at java.base/java.security.Security.getImpl(Unknown Source)
at java.base/java.security.KeyStore.getInstance(Unknown Source)
at shadow.nl.altindag.ssl.util.KeyStoreUtils.createKeyStore(KeyStoreUtils.java:143)
at shadow.nl.altindag.ssl.util.KeyStoreUtils.loadSystemKeyStores(KeyStoreUtils.java:210)
at shadow.nl.altindag.ssl.util.TrustManagerUtils.createTrustManagerWithSystemTrustedCertificates(TrustManagerUtils.java:82)
at shadow.nl.altindag.ssl.util.CertificateUtils.getSystemTrustedCertificates(CertificateUtils.java:224)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.applyCertificateAuthorities(DocumentDbConnectionProperties.java:1402)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.applyToSslSettings(DocumentDbConnectionProperties.java:1394)
at shadow.com.mongodb.MongoClientSettings$Builder.applyToSslSettings(MongoClientSettings.java:322)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.applyTlsSettings(DocumentDbConnectionProperties.java:1378)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.buildMongoClientSettings(DocumentDbConnectionProperties.java:774)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.buildMongoClientSettings(DocumentDbConnectionProperties.java:727)
at software.amazon.documentdb.jdbc.DocumentDbConnectionProperties.createMongoClient(DocumentDbConnectionProperties.java:706)
at software.amazon.documentdb.jdbc.DocumentDbConnection.initializeClients(DocumentDbConnection.java:282)
at software.amazon.documentdb.jdbc.DocumentDbConnection.(DocumentDbConnection.java:92)
at software.amazon.documentdb.jdbc.DocumentDbDriver.connect(DocumentDbDriver.java:94)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCConnectionOpener.run(JDBCConnectionOpener.java:109)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCConnectionOpener.run(JDBCConnectionOpener.java:83)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:222)
at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.openConnection(GenericDataSource.java:160)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:106)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:102)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.(JDBCRemoteInstance.java:61)
at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:120)
at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.(GenericDataSource.java:125)
at org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel.createDataSourceImpl(GenericMetaModel.java:92)
at org.jkiss.dbeaver.ext.generic.GenericDataSourceProvider.openDataSource(GenericDataSourceProvider.java:106)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.openDataSource(DataSourceDescriptor.java:1405)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect0(DataSourceDescriptor.java:1275)
at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:1060)
at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:78)
at org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob.run(ConnectionTestJob.java:103)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:117)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
6. Any other details that can be helpful:
jdbc:documentdb://xxxx.zzzz.docdb.amazonaws.com:27017/yyyyyy?tlsAllowInvalidHostnames=true&tlsCAFile=~/certificats/aws_document_db_global-bundle.pem

documentdb-jdbc-1.3.1-all.jar(success)
documentdb-jdbc-1.4.1-all.jar (success)
documentdb-jdbc-1.4.2-all.jar (fail)
documentdb-jdbc-1.4.3-all.jar (fail)
documentdb-jdbc-1.4.4-all.jar (fail)
documentdb-jdbc-1.4.5-all.jar (fail)
---

## Screenshots
- If applicable, add screenshots to help explain your problem.

---

## JDBC log
- Add related JDBC log entries here.

Contributor guide

Open the contributing guide

Research direction

Reproduce the connection test on macOS with OpenJDK 17 and compare documentdb-jdbc 1.4.1 against 1.4.2 or later. Start with KeyStoreUtils.createKeyStore and loadSystemKeyStores in the stack trace, then trace how DocumentDbConnectionProperties applies certificate authorities. Done means the affected driver versions connect successfully without the KeychainStore exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, java
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.