Browse Source

修改Minio配置

4228306 5 years ago
parent
commit
5c9c14faa6

+ 22 - 0
src/main/java/edu/math/diagnosis/config/AnyTrustManager.java

@@ -0,0 +1,22 @@
+package edu.math.diagnosis.config;
+
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+public class AnyTrustManager implements X509TrustManager {
+    @Override
+    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+
+    }
+
+    @Override
+    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
+
+    }
+
+    @Override
+    public X509Certificate[] getAcceptedIssuers() {
+        return new X509Certificate[0];
+    }
+}

+ 45 - 6
src/main/java/edu/math/diagnosis/config/MinioConfig.java

@@ -3,16 +3,20 @@ package edu.math.diagnosis.config;
 import edu.math.diagnosis.file.FileService;
 import edu.math.diagnosis.file.MinioFileService;
 import io.minio.MinioClient;
-import org.apache.commons.lang3.StringUtils;
+import okhttp3.OkHttpClient;
+import okhttp3.Protocol;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import javax.net.ssl.*;
+import java.security.GeneralSecurityException;
+import java.security.SecureRandom;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import static com.aliyun.oss.ClientConfiguration.DEFAULT_CONNECTION_TIMEOUT;
 
 @Configuration
 public class MinioConfig {
@@ -29,10 +33,45 @@ public class MinioConfig {
         return new MinioFileService();
     }
 
+    @Bean
+    OkHttpClient okHttpClient() {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        X509TrustManager trustManager;
+        SSLSocketFactory sslSocketFactory;
+        trustManager = new AnyTrustManager();
+
+        try {
+            SSLContext sslContext;
+            sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, new X509TrustManager[]{trustManager}, new SecureRandom());
+            sslSocketFactory = sslContext.getSocketFactory();
+        } catch (GeneralSecurityException e) {
+            throw new RuntimeException(e);
+        }
+
+        HostnameVerifier DO_NOT_VERIFY = (hostname, session) -> true;
+
+        List<Protocol> protocol = new LinkedList<>();
+        protocol.add(Protocol.HTTP_1_1);
+        return okHttpClient.newBuilder()
+                .connectTimeout(DEFAULT_CONNECTION_TIMEOUT, TimeUnit.SECONDS)
+                .writeTimeout(DEFAULT_CONNECTION_TIMEOUT, TimeUnit.SECONDS)
+                .readTimeout(DEFAULT_CONNECTION_TIMEOUT, TimeUnit.SECONDS)
+                .protocols(protocol)
+                .hostnameVerifier(DO_NOT_VERIFY)
+                .sslSocketFactory(sslSocketFactory, trustManager)
+                .build();
+    }
+
     @Bean
     MinioClient minioClient(MinioProperties properties) throws Exception {
         logger.info("init MinioClient,url is {} , accessKey is {} , secretKey is {}", properties.getUrl(), properties.getAccessKey(), properties.getSecretKey());
-        MinioClient client = new MinioClient(properties.getUrl(), properties.getAccessKey(), properties.getSecretKey());
+        MinioClient client = null;
+        if (properties.isSecure()) {
+             client = new MinioClient(properties.getUrl(), properties.getSecurePort(), properties.getAccessKey(), properties.getSecretKey(), null, true, okHttpClient());
+        }else {
+            client = new MinioClient(properties.getUrl(),properties.getAccessKey(),properties.getSecretKey());
+        }
         Set<String> buckets = new HashSet<>(Arrays.asList(properties.getBuckets()));
         buckets.add(properties.getDefaultBucket());
         for (String bucket : buckets) {

+ 18 - 0
src/main/java/edu/math/diagnosis/config/MinioProperties.java

@@ -10,6 +10,8 @@ public class MinioProperties {
     private String url;
     private String[] buckets = {};
     private String defaultBucket = DEFAULT_BUCKET;
+    private boolean secure = false;
+    private int securePort = 443;
     private String accessKey = "admin";
     private String secretKey = "admin123";
 
@@ -29,6 +31,22 @@ public class MinioProperties {
         this.buckets = buckets;
     }
 
+    public boolean isSecure() {
+        return secure;
+    }
+
+    public void setSecure(boolean secure) {
+        this.secure = secure;
+    }
+
+    public int getSecurePort() {
+        return securePort;
+    }
+
+    public void setSecurePort(int securePort) {
+        this.securePort = securePort;
+    }
+
     public String getAccessKey() {
         return accessKey;
     }

+ 1 - 0
src/main/resources/application-cloud.properties

@@ -27,6 +27,7 @@ spring.redis.port=6379
 
 #外部要使用,所以不能为内部地址
 minio.url=https://minio.yaoxiangedu.com/
+minio.secure=true
 minio.buckets=prod
 minio.defaultBucket=prod
 minio.accessKey=admin

+ 2 - 0
src/main/resources/application-dev.properties

@@ -28,6 +28,8 @@ local.uploadUrl=http://${serverAddress}:9001/file/upload
 local.downloadUrl=http://${serverAddress}:9001/file/download/
 
 minio.url=http://${serverAddress}:30240/
+#minio.url=https://minio.yaoxiangedu.com/
+minio.secure=false
 minio.buckets=dev
 minio.defaultBucket=dev
 minio.accessKey=admin

+ 1 - 0
src/main/resources/application-docker.properties

@@ -21,6 +21,7 @@ local.downloadUrl=http://${serverAddress}:9001/file/download/
 
 
 minio.url=http://${serverAddress}:30240/
+minio.secure=false
 minio.buckets=dev
 minio.defaultBucket=dev
 minio.accessKey=admin

+ 1 - 0
src/main/resources/application-prod.properties

@@ -25,6 +25,7 @@ local.uploadUrl=http://${serverOutsideAddress}:9000/file/upload
 local.downloadUrl=http://${serverOutsideAddress}:9000/file/download/
 
 minio.url=http://${serverAddress}:30240/
+minio.secure=false
 minio.buckets=prod
 minio.defaultBucket=prod
 minio.accessKey=admin