Skip to content

Commit 683dd25

Browse files
committed
Added test to verify that strict mode throws exception with no trust store
1 parent ae870c1 commit 683dd25

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

client-v2/src/main/java/com/clickhouse/client/api/internal/HttpAPIClientHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import javax.net.ssl.HostnameVerifier;
6868
import javax.net.ssl.SNIHostName;
6969
import javax.net.ssl.SSLContext;
70+
import javax.net.ssl.SSLException;
7071
import javax.net.ssl.SSLParameters;
7172
import javax.net.ssl.SSLSocket;
7273
import java.io.IOException;
@@ -894,6 +895,10 @@ public RuntimeException wrapException(String message, Exception cause, String qu
894895
return (RuntimeException) cause;
895896
}
896897

898+
if (cause instanceof SSLException) {
899+
return new ClickHouseException("SSL Problem", cause, queryId);
900+
}
901+
897902
if (cause instanceof ConnectionRequestTimeoutException ||
898903
cause instanceof NoHttpResponseException ||
899904
cause instanceof ConnectTimeoutException ||

client-v2/src/test/java/com/clickhouse/client/HttpTransportTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.clickhouse.client;
22

3+
import com.clickhouse.client.api.ClickHouseException;
34
import com.clickhouse.client.api.Client;
45
import com.clickhouse.client.api.ClientConfigProperties;
56
import com.clickhouse.client.api.ClientException;
67
import com.clickhouse.client.api.ClientFaultCause;
78
import com.clickhouse.client.api.ClientMisconfigurationException;
89
import com.clickhouse.client.api.ConnectionInitiationException;
910
import com.clickhouse.client.api.ConnectionReuseStrategy;
11+
import com.clickhouse.client.api.DataTransferException;
1012
import com.clickhouse.client.api.ServerException;
1113
import com.clickhouse.client.api.Session;
1214
import com.clickhouse.client.api.command.CommandResponse;
@@ -59,6 +61,7 @@
5961
import org.testng.annotations.DataProvider;
6062
import org.testng.annotations.Test;
6163

64+
import javax.net.ssl.SSLHandshakeException;
6265
import java.io.ByteArrayInputStream;
6366
import java.io.ByteArrayOutputStream;
6467
import java.io.StringWriter;
@@ -437,6 +440,18 @@ public void testSSLModeStrictWithTrustStoreAndCaCertificate() {
437440
}
438441

439442
ClickHouseNode secureServer = getSecureServer(ClickHouseProtocol.HTTP);
443+
// A trust store and a CA certificate cannot both take effect: the trust store is used and the
444+
// CA certificate is ignored (a warning is logged). The connection still succeeds via the trust store.
445+
try (Client client = new Client.Builder()
446+
.addEndpoint("https://localhost:" + secureServer.getPort())
447+
.setUsername("default")
448+
.setPassword(ClickHouseServerForTest.getPassword())
449+
.build()) {
450+
ClientException ex = Assert.expectThrows(ClientException.class, () -> client.queryAll("SELECT timezone()"));
451+
452+
Assert.assertTrue(ex.getCause() instanceof ClickHouseException);
453+
Assert.assertTrue(ex.getCause().getMessage().startsWith("SSL Problem"));
454+
}
440455

441456
// A trust store and a CA certificate cannot both take effect: the trust store is used and the
442457
// CA certificate is ignored (a warning is logged). The connection still succeeds via the trust store.

0 commit comments

Comments
 (0)