From 2d6204ae15f23e8e30bad9e42b7373f01ace9130 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Sat, 18 Oct 2025 10:17:57 +0800
Subject: [PATCH] 解决minio临时凭证获取tls问题
---
ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
index 758b8b3..5097bce 100644
--- a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
+++ b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
@@ -22,6 +22,7 @@
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
+import java.security.ProviderException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Objects;
@@ -44,8 +45,8 @@
return OssTypeEnum.MINIO.getType();
}
- @Override
- public CredentialsDTO getCredentials() {
+
+ public CredentialsDTO getCredentials1111() {
try {
AssumeRoleProvider provider = new AssumeRoleProvider(endpoint, accessKey,
secretKey, Math.toIntExact(OssConfiguration.expire),
@@ -57,6 +58,53 @@
}
return null;
}
+ @Override
+ public CredentialsDTO getCredentials() {
+ try {
+ // 创建自签证书的 OkHttpClient
+ TrustManager[] trustAllCerts = new TrustManager[]{
+ new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) {}
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) {}
+ @Override
+ public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; }
+ }
+ };
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, trustAllCerts, new SecureRandom());
+ OkHttpClient httpClient = new OkHttpClient.Builder()
+ .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustAllCerts[0])
+ .hostnameVerifier((hostname, session) -> true)
+ .build();
+
+ // 构建 AssumeRoleProvider,使用自定义 httpClient
+ AssumeRoleProvider provider = new AssumeRoleProvider(
+ endpoint,
+ accessKey,
+ secretKey,
+ Math.toIntExact(OssConfiguration.expire),
+ null,
+ OssConfiguration.region,
+ null,
+ null,
+ null,
+ httpClient
+ );
+
+ // 获取 STS 凭证
+ var stsCredentials = provider.fetch();
+ return new CredentialsDTO(stsCredentials, OssConfiguration.expire);
+
+ } catch (ProviderException e) {
+ log.error("Failed to parse STS response", e);
+ throw new RuntimeException("STS response parse failed", e);
+ } catch (NoSuchAlgorithmException | java.security.KeyManagementException e) {
+ log.error("Failed to create custom SSL context", e);
+ throw new RuntimeException("SSL setup failed", e);
+ }
+ }
@Override
public URL getObjectUrl(String bucket, String objectKey) {
--
Gitblit v1.9.3