From 377866167c6f997ada5aa38c6e08fc697de61bd5 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期三, 19 八月 2026 17:05:15 +0800
Subject: [PATCH] 增加验证证书
---
app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 57 insertions(+), 0 deletions(-)
diff --git a/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java b/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
index b146d0d..5386ee4 100644
--- a/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
+++ b/app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
@@ -6,7 +6,9 @@
import android.util.Log;
import com.driver.igotrip.BuildConfig;
+import com.driver.igotrip.R;
import com.driver.igotrip.base.Const;
+import com.driver.igotrip.base.MyApplication;
import com.driver.igotrip.utils.LogUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
@@ -15,11 +17,21 @@
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.Type;
+import java.security.KeyStore;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
import cn.sinata.xldutils.utils.SPUtils;
import io.reactivex.Observable;
@@ -70,6 +82,44 @@
}
}
+ private SSLSocketFactory getSSLSocketFactory(X509TrustManager trustManager) {
+ try {
+ SSLContext tls = SSLContext.getInstance("TLS");
+ tls.init(null, new TrustManager[]{trustManager}, null);
+ return tls.getSocketFactory();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private X509TrustManager createTrustManager(int certificateResId) {
+ try {
+ CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
+ try (
+ // 读取证书文件
+ InputStream inputStream = MyApplication.Companion.getAppContext().getResources().openRawResource(certificateResId)
+ ) {
+ X509Certificate certificate = (X509Certificate) certificateFactory.generateCertificate(inputStream);
+
+ // 创建包含该证书的KeyStore
+ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ keyStore.load(null, null);
+ keyStore.setCertificateEntry("server", certificate);
+
+ // 创建TrustManager
+ TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ trustManagerFactory.init(keyStore);
+ return (X509TrustManager) trustManagerFactory.getTrustManagers()[0];
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
/**
* 初始化数据
*
@@ -80,6 +130,13 @@
builder.connectTimeout(3, TimeUnit.MINUTES);
builder.readTimeout(3, TimeUnit.MINUTES);
builder.writeTimeout(3, TimeUnit.MINUTES);
+ X509TrustManager trustManager = createTrustManager(R.raw.star_gopost_ci);
+ if (trustManager != null) {
+ SSLSocketFactory sslSocketFactory = getSSLSocketFactory(trustManager);
+ if (sslSocketFactory != null) {
+ builder.sslSocketFactory(sslSocketFactory, trustManager);
+ }
+ }
// builder.addInterceptor(new Interceptor() {
// @Override
// public Response intercept(Chain chain) throws IOException {
--
Gitblit v1.7.1