Skip to content

Commit 132b91b

Browse files
author
jeffreykzli
committed
ignore ssl cert check
1 parent 89f8250 commit 132b91b

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.qcloud</groupId>
66
<artifactId>cos_api</artifactId>
7-
<version>5.6.220</version>
7+
<version>5.6.220.2</version>
88
<packaging>jar</packaging>
99
<name>cos-java-sdk</name>
1010
<description>java sdk for qcloud cos</description>

src/main/java/com/qcloud/cos/ClientConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ public class ClientConfig {
117117

118118
private int error_log_status_code_thresh = 500;
119119

120+
private boolean checkSSLCertificate = true;
121+
120122
// 不传入region 用于后续调用List Buckets(获取所有的bucket信息)
121123
public ClientConfig() {
122124
super();
@@ -409,4 +411,12 @@ public void setErrorLogStatusCodeThresh(int status_code) {
409411
public int getErrorLogStatusCodeThresh() {
410412
return error_log_status_code_thresh;
411413
}
414+
415+
public void setCheckSSLCertificate(boolean isCheckSSLCertificate) {
416+
checkSSLCertificate = isCheckSSLCertificate;
417+
}
418+
419+
public boolean isCheckSSLCertificate() {
420+
return checkSSLCertificate;
421+
}
412422
}

src/main/java/com/qcloud/cos/http/DefaultCosHttpClient.java

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
import java.io.InputStream;
2626
import java.net.URI;
2727
import java.net.URISyntaxException;
28+
import java.security.NoSuchAlgorithmException;
29+
import java.security.KeyManagementException;
30+
import java.security.KeyStoreException;
31+
import java.util.Date;
32+
import java.util.Objects;
2833
import java.util.HashMap;
2934
import java.util.List;
3035
import java.util.Map;
@@ -33,8 +38,6 @@
3338
import java.util.concurrent.TimeoutException;
3439
import java.util.regex.Matcher;
3540
import java.util.regex.Pattern;
36-
import java.util.Date;
37-
import java.util.Objects;
3841

3942
import com.qcloud.cos.ClientConfig;
4043
import com.qcloud.cos.Headers;
@@ -80,6 +83,13 @@
8083
import org.apache.http.client.methods.HttpPut;
8184
import org.apache.http.client.methods.HttpRequestBase;
8285
import org.apache.http.client.protocol.HttpClientContext;
86+
import org.apache.http.config.Registry;
87+
import org.apache.http.config.RegistryBuilder;
88+
import org.apache.http.conn.socket.ConnectionSocketFactory;
89+
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
90+
import org.apache.http.conn.ssl.NoopHostnameVerifier;
91+
import org.apache.http.ssl.SSLContextBuilder;
92+
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
8393
import org.apache.http.entity.InputStreamEntity;
8494
import org.apache.http.impl.client.HttpClientBuilder;
8595
import org.apache.http.impl.client.HttpClients;
@@ -88,6 +98,7 @@
8898
import org.slf4j.Logger;
8999
import org.slf4j.LoggerFactory;
90100

101+
import javax.net.ssl.SSLContext;
91102

92103
public class DefaultCosHttpClient implements CosHttpClient {
93104

@@ -107,7 +118,29 @@ public DefaultCosHttpClient(ClientConfig clientConfig) {
107118
super();
108119
this.errorResponseHandler = new CosErrorResponseHandler();
109120
this.clientConfig = clientConfig;
110-
this.connectionManager = new PoolingHttpClientConnectionManager();
121+
122+
if (clientConfig.isCheckSSLCertificate()) {
123+
this.connectionManager = new PoolingHttpClientConnectionManager();
124+
} else {
125+
try {
126+
SSLContext sslContext = SSLContextBuilder.create().loadTrustMaterial((chain, authType) -> true).build();
127+
128+
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
129+
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create()
130+
.register("http", PlainConnectionSocketFactory.getSocketFactory())
131+
.register("https", sslSocketFactory).build();
132+
this.connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
133+
} catch (NoSuchAlgorithmException e) {
134+
log.error("fail to init http client: ", e);
135+
throw new RuntimeException(e);
136+
} catch (KeyStoreException e) {
137+
log.error("fail to init http client: ", e);
138+
throw new RuntimeException(e);
139+
} catch (KeyManagementException e) {
140+
log.error("fail to init http client: ", e);
141+
throw new RuntimeException(e);
142+
}
143+
}
111144
this.maxErrorRetry = clientConfig.getMaxErrorRetry();
112145
this.retryPolicy = ValidationUtils.assertNotNull(clientConfig.getRetryPolicy(), "retry policy");
113146
this.backoffStrategy = ValidationUtils.assertNotNull(clientConfig.getBackoffStrategy(), "backoff strategy");

0 commit comments

Comments
 (0)