Connecting MongoDB to Metabase with self-signed certificate

#1

I’ve a Mongo database with the follow URI schema: mongodb://username:password@url1:port,url2:port/database?authSource=admin&ssl=true and I can’t connect Metabase BI to my database.

The image below is how I’m setting up the database:

I was getting the follow error:

com.mongodb.MongoTimeoutException: Timed out after 3000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=url:port, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]

I’ve tried to see this solution here opened on Metabase Discussion but I didn’t succeed cause I have no certificate and I usually connect to my database using ‘sslAllowInvalidCertificates’. Furthermore, when I create a certificate as has taught on this link and now I’m getting the follow error:

“dbname”:“com.mongodb.MongoTimeoutException: Timed out after 3000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=url:port, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: url}, caused by {java.net.UnknownHostException: url}}]”

Could someone help me?

#2

Hi @vitoresende
I don’t run MongoDB, but since it’s saying Prematurely reached end of stream, I would think you would see the connection failing in your MongoDB log - do you see anything there?

#3

Unfortunately I don’t have access to these kind of data or logs. And I updated the error, now I’m getting the error java.net.UnknownHostException

#4

But that sounds like the address in Server field is wrong. Can you ping that hostname from the same server that runs Metabase?

#5

I can’t :confused:

#6

UnknownHostException was due my network connection. But now, I’m getting the follow error:

“com.mongodb.MongoTimeoutException: Timed out after 3000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address:38796=sl-us-south-1-portal.22.dblayer.com, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketWriteException: Exception sending message}, caused by {javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}, caused by {sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target}}]”

Could someone help me?

#7

Are you using a self-signed certificate? Then you might be seeing this issue - there are some workarounds:

#8

I was answering the topic cause I’ve found this solution and I tried what j005u said there. And I’ve got the same error of before: “Prematurely reached end of stream”. I’ve tried everything build manually and using Docker, but nothing is working :frowning: