aws / aws/amazon-documentdb-jdbc-driver
[BUG] java.security.KeyStoreException: KeychainStore not found - broken since v1.4.2
- 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
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