Commit fbc698401cba5cb1fecfef5dc0cf3eeb72f54b8d

Authored by xp.Huang
2 parents 083209fd cc704e7e

Merge branch '20220802' into 'master'

fix: minio接口https无法调用问题

See merge request huang/thingsboard3.3.2!123
@@ -2,6 +2,7 @@ package org.thingsboard.server.common.data.yunteng.core.utils; @@ -2,6 +2,7 @@ package org.thingsboard.server.common.data.yunteng.core.utils;
2 2
3 import io.minio.*; 3 import io.minio.*;
4 import lombok.extern.slf4j.Slf4j; 4 import lombok.extern.slf4j.Slf4j;
  5 +import okhttp3.OkHttpClient;
5 import org.apache.commons.lang3.RandomStringUtils; 6 import org.apache.commons.lang3.RandomStringUtils;
6 import org.jetbrains.annotations.NotNull; 7 import org.jetbrains.annotations.NotNull;
7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,10 +19,15 @@ import org.thingsboard.server.common.data.yunteng.core.exception.FileStorageExce @@ -18,10 +19,15 @@ import org.thingsboard.server.common.data.yunteng.core.exception.FileStorageExce
18 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; 19 import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
19 import org.thingsboard.server.common.data.yunteng.dto.FileUploadResponse; 20 import org.thingsboard.server.common.data.yunteng.dto.FileUploadResponse;
20 21
  22 +import javax.net.ssl.*;
21 import javax.servlet.http.HttpServletRequest; 23 import javax.servlet.http.HttpServletRequest;
22 import javax.servlet.http.HttpServletResponse; 24 import javax.servlet.http.HttpServletResponse;
23 import java.io.InputStream; 25 import java.io.InputStream;
24 import java.io.OutputStream; 26 import java.io.OutputStream;
  27 +import java.security.KeyManagementException;
  28 +import java.security.NoSuchAlgorithmException;
  29 +import java.security.SecureRandom;
  30 +import java.security.cert.X509Certificate;
25 import java.util.Objects; 31 import java.util.Objects;
26 32
27 @Service 33 @Service
@@ -33,13 +39,15 @@ public class MinioFileStorageService implements FileStorageService { @@ -33,13 +39,15 @@ public class MinioFileStorageService implements FileStorageService {
33 private MinioClient minioClient; 39 private MinioClient minioClient;
34 40
35 @Autowired 41 @Autowired
36 - public MinioFileStorageService(MinioFileStorageProperties fileStorageProperties) { 42 + public MinioFileStorageService(MinioFileStorageProperties fileStorageProperties)
  43 + throws KeyManagementException {
37 this.fileStorageProperties = fileStorageProperties; 44 this.fileStorageProperties = fileStorageProperties;
38 // 创建客户端对象 45 // 创建客户端对象
39 this.minioClient = 46 this.minioClient =
40 MinioClient.builder() 47 MinioClient.builder()
41 .endpoint(fileStorageProperties.getMinioUrl()) 48 .endpoint(fileStorageProperties.getMinioUrl())
42 .credentials(fileStorageProperties.getMinioName(), fileStorageProperties.getMinioPass()) 49 .credentials(fileStorageProperties.getMinioName(), fileStorageProperties.getMinioPass())
  50 + .httpClient(getUnsafeOkHttpClient())
43 .build(); 51 .build();
44 // 创建储存桶 52 // 创建储存桶
45 checkBucket(); 53 checkBucket();
@@ -172,4 +180,38 @@ public class MinioFileStorageService implements FileStorageService { @@ -172,4 +180,38 @@ public class MinioFileStorageService implements FileStorageService {
172 .concat("/") 180 .concat("/")
173 .concat(fileName); 181 .concat(fileName);
174 } 182 }
  183 +
  184 + public static OkHttpClient getUnsafeOkHttpClient() throws KeyManagementException {
  185 + try {
  186 + final TrustManager[] trustAllCerts =
  187 + new TrustManager[] {
  188 + new X509TrustManager() {
  189 + @Override
  190 + public void checkClientTrusted(X509Certificate[] x509Certificates, String s){}
  191 +
  192 + @Override
  193 + public void checkServerTrusted(X509Certificate[] x509Certificates, String s){}
  194 +
  195 + @Override
  196 + public X509Certificate[] getAcceptedIssuers() {
  197 + return new X509Certificate[] {};
  198 + }
  199 + }
  200 + };
  201 +
  202 + final SSLContext sslContext = SSLContext.getInstance("SSL");
  203 + sslContext.init(null, trustAllCerts, new SecureRandom());
  204 + final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
  205 + OkHttpClient.Builder builder = new OkHttpClient.Builder();
  206 + builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
  207 +
  208 + builder.hostnameVerifier(
  209 + (s, sslSession) -> true);
  210 + return builder.build();
  211 +
  212 + } catch (NoSuchAlgorithmException e) {
  213 + e.printStackTrace();
  214 + }
  215 + return null;
  216 + }
175 } 217 }