Skip to content

Commit 3c408e4

Browse files
author
jordanqin
committed
update qcloud sdk to 1.5.70
1 parent 01036fe commit 3c408e4

File tree

3 files changed

+65
-5
lines changed

3 files changed

+65
-5
lines changed

QCloudFoundation/foundation/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
minSdkVersion 15
88
targetSdkVersion 28
99

10-
versionCode 10569
11-
versionName "1.5.69"
10+
versionCode 10570
11+
versionName "1.5.70"
1212

1313
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
1414

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/OkHttpClientImpl.java

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,18 @@
2727
import com.tencent.qcloud.core.http.interceptor.RetryInterceptor;
2828
import com.tencent.qcloud.core.http.interceptor.TrafficControlInterceptor;
2929

30+
import java.io.ByteArrayInputStream;
31+
import java.security.KeyStore;
32+
import java.security.SecureRandom;
3033
import java.util.concurrent.TimeUnit;
3134

3235
import javax.net.ssl.HostnameVerifier;
36+
import javax.net.ssl.KeyManager;
37+
import javax.net.ssl.KeyManagerFactory;
3338
import javax.net.ssl.SSLContext;
3439
import javax.net.ssl.SSLSession;
3540
import javax.net.ssl.TrustManager;
41+
import javax.net.ssl.TrustManagerFactory;
3642
import javax.net.ssl.X509TrustManager;
3743

3844
import okhttp3.Call;
@@ -74,8 +80,11 @@ public void init(QCloudHttpClient.Builder b, HostnameVerifier hostnameVerifier,
7480
// .addNetworkInterceptor(new HttpMetricsInterceptor())
7581
.addInterceptor(logInterceptor)
7682
.addInterceptor(new RetryInterceptor(b.retryStrategy))
77-
.addInterceptor(new TrafficControlInterceptor())
78-
.addInterceptor(redirectInterceptor);
83+
.addInterceptor(new TrafficControlInterceptor());
84+
// 设置重定向
85+
if(b.redirectEnable){
86+
builder.addInterceptor(redirectInterceptor);
87+
}
7988
// 绕过ssl
8089
if(!b.verifySSLEnable){
8190
try {
@@ -102,13 +111,44 @@ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
102111
}
103112
}
104113
};
105-
SSLContext sslContext = SSLContext.getInstance("SSL");
114+
SSLContext sslContext = SSLContext.getInstance("TLS");
106115
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
107116
builder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager)trustAllCerts[0]);
108117
} catch (Exception e){
109118
e.printStackTrace();
110119
}
111120
}
121+
122+
// 设置客户端证书
123+
if(b.clientCertificateBytes != null) {
124+
try {
125+
// 加载客户端证书
126+
KeyStore clientKeyStore = KeyStore.getInstance("BKS");
127+
if (b.clientCertificateBytes != null) {
128+
clientKeyStore.load(new ByteArrayInputStream(b.clientCertificateBytes), b.clientCertificatePassword);
129+
} else {
130+
throw new IllegalStateException("No client certificate provided");
131+
}
132+
133+
// 创建一个KeyManager,用于提供客户端证书
134+
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
135+
keyManagerFactory.init(clientKeyStore, b.clientCertificatePassword);
136+
KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
137+
138+
// 创建一个TrustManager,用于信任服务器证书
139+
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
140+
trustManagerFactory.init((KeyStore) null);
141+
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
142+
143+
// 创建一个SSLContext,并设置KeyManager和TrustManager
144+
SSLContext sslContext = SSLContext.getInstance("TLS");
145+
sslContext.init(keyManagers, trustManagers, new SecureRandom());
146+
builder.sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]);
147+
} catch (Exception e) {
148+
e.printStackTrace();
149+
}
150+
}
151+
112152
okHttpClient = builder.build();
113153
redirectInterceptor.setClient(okHttpClient);
114154
}

QCloudFoundation/foundation/src/main/java/com/tencent/qcloud/core/http/QCloudHttpClient.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,10 @@ public final static class Builder {
314314
List<String> prefetchHost = new LinkedList<>();
315315
boolean dnsCache = false;
316316
boolean verifySSLEnable = true;
317+
boolean redirectEnable = false;
318+
319+
byte[] clientCertificateBytes;
320+
char[] clientCertificatePassword;
317321

318322
public Builder() {
319323
}
@@ -374,6 +378,22 @@ public Builder setVerifySSLEnable(boolean verifySSLEnable) {
374378
return this;
375379
}
376380

381+
/**
382+
* 设置tls客户端证书
383+
* @param certificateBytes 客户端证书字节数组, 需要为BKS格式
384+
* @param password BKS文件的密码,如果你的BKS文件没有密码,请传入null
385+
*/
386+
public Builder setClientCertificate(byte[] certificateBytes, char[] password) {
387+
this.clientCertificateBytes = certificateBytes;
388+
this.clientCertificatePassword = password;
389+
return this;
390+
}
391+
392+
public Builder setRedirectEnable(boolean redirectEnable) {
393+
this.redirectEnable = redirectEnable;
394+
return this;
395+
}
396+
377397
public QCloudHttpClient build() {
378398
if (retryStrategy == null) {
379399
retryStrategy = RetryStrategy.DEFAULT;

0 commit comments

Comments
 (0)