From bb94831177ca7c7c46ba232219189f56307ab7f3 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 29 二月 2024 16:20:46 +0800
Subject: [PATCH] 修复访问assist配置https访问失败的问题

---
 src/main/java/com/genersoft/iot/vmp/utils/SSLSocketClientUtil.java    |   53 ++++++++++++++++++++++++++
 src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java |   10 +++--
 2 files changed, 59 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
index cb0d3dd..d7c91df 100644
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/AssistRESTfulUtils.java
@@ -2,9 +2,8 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.genersoft.iot.vmp.conf.exception.ControllerException;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
-import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
+import com.genersoft.iot.vmp.utils.SSLSocketClientUtil;
 import okhttp3.*;
 import okhttp3.logging.HttpLoggingInterceptor;
 import org.jetbrains.annotations.NotNull;
@@ -13,11 +12,10 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
+import javax.net.ssl.X509TrustManager;
 import java.io.IOException;
 import java.net.ConnectException;
-import java.net.MalformedURLException;
 import java.net.SocketTimeoutException;
-import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -61,6 +59,10 @@
                 // OkHttp閫茶娣诲姞鏀旀埅鍣╨oggingInterceptor
                 httpClientBuilder.addInterceptor(logging);
             }
+            X509TrustManager manager = SSLSocketClientUtil.getX509TrustManager();
+            // 璁剧疆ssl
+            httpClientBuilder.sslSocketFactory(SSLSocketClientUtil.getSocketFactory(manager), manager);
+            httpClientBuilder.hostnameVerifier(SSLSocketClientUtil.getHostnameVerifier());//蹇界暐鏍¢獙
             client = httpClientBuilder.build();
         }
         return client;
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/SSLSocketClientUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/SSLSocketClientUtil.java
new file mode 100644
index 0000000..c85b163
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/utils/SSLSocketClientUtil.java
@@ -0,0 +1,53 @@
+package com.genersoft.iot.vmp.utils;
+
+import javax.net.ssl.*;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+public class SSLSocketClientUtil {
+    public static SSLSocketFactory getSocketFactory(TrustManager manager) {
+        SSLSocketFactory socketFactory = null;
+        try {
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, new TrustManager[]{manager}, new SecureRandom());
+            socketFactory = sslContext.getSocketFactory();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (KeyManagementException e) {
+            e.printStackTrace();
+        }
+        return socketFactory;
+    }
+
+    public static X509TrustManager getX509TrustManager() {
+        return new X509TrustManager() {
+            @Override
+            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+
+            }
+
+            @Override
+            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+
+            }
+
+            @Override
+            public X509Certificate[] getAcceptedIssuers() {
+                return new X509Certificate[0];
+            }
+        };
+    }
+
+    public static HostnameVerifier getHostnameVerifier() {
+        HostnameVerifier hostnameVerifier = new HostnameVerifier() {
+            @Override
+            public boolean verify(String s, SSLSession sslSession) {
+                return true;
+            }
+        };
+        return hostnameVerifier;
+    }
+}

--
Gitblit v1.8.0