首先是想让minio文件服务器绕过证书认证,参考该资料做的
https://blog.csdn.net/u010445301/article/details/108058005
其次在用到okhttps来绕过证书认证的时候报了个错
clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+
网上的方法说降低jdk8版本到025以下。但是minio用jdk8低版本的时候会报一个日期处理的错误,算是bug了把,放弃了这个方法,通过
https://www.pianshen.com/article/14642043210/
这篇博文的分析。对工具类进行了微调。就可以了
附上代码
package com.assmt.system.configs;
import okhttp3.OkHttpClient;
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 SslUtils {
public static OkHttpClient getUnsafeOkHttpClent() throws KeyManagementException {
try {
final TrustManager[] trustAllCerts = new TrustManager[]{
new 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[]{};
}
}
};
X509TrustManager x509TrustManager = (X509TrustManager) trustAllCerts[0];
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new SecureRandom());
final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.sslSocketFactory(sslSocketFactory,x509TrustManager);
builder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
return builder.build();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}