Minio使用https自签证书

自签证书参考:window和ubuntu自签证书_windows 自签证书-CSDN博客

java 复制代码
// certFilePath: 直接放在 resources 目录下 或者可以自定实现读取逻辑  

// 读取的是  .crt 证书文件

public static OkHttpClient createTrustingOkHttpClient(String certFilePath) throws Exception {
        // 1. 加载证书
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream certInput = SSLUtil.class.getClassLoader().getResourceAsStream(certFilePath);
        if (certInput == null || certInput.available() == 0) {
            throw new RuntimeException("证书读取失败");
        }
        X509Certificate ca = (X509Certificate) cf.generateCertificate(certInput);

        // 2. 创建KeyStore并导入证书
        KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", ca);

        // 3. 创建TrustManager信任我们的KeyStore
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init(keyStore);

        // 4. 创建SSLContext
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, tmf.getTrustManagers(), null);

        // 5. 创建OkHttpClient
        return new OkHttpClient.Builder()
                .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) tmf.getTrustManagers()[0])
                .hostnameVerifier((hostname, session) -> true) // 可选:禁用主机名验证
                .build();
    }




public static void main(String[] args) throws Exception {
        // 构建 OkHttpClient
        OkHttpClient insecureClient = createTrustingOkHttpClient("test_10.crt");

        MinioClient client = MinioClient.builder()
                .endpoint("https://192.168.0.101:9000")
                .credentials("abc-bucket", "123456")
                .region("us-east-1")
                .httpClient(insecureClient)
                .build();

        List<Bucket> buckets = client.listBuckets();
        System.out.println(buckets);
    }
相关推荐
我是咸鱼不闲呀20 分钟前
力扣Hot100系列19(Java)——[动态规划]总结(上)(爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换)
java·leetcode·动态规划
加油,小猿猿1 小时前
Java开发日志-双数据库事务问题
java·开发语言·数据库
yuluo_YX1 小时前
Reactive 编程 - Java Reactor
java·python·apache
山岚的运维笔记1 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
南极企鹅2 小时前
springBoot项目有几个端口
java·spring boot·后端
清风拂山岗 明月照大江2 小时前
Redis笔记汇总
java·redis·缓存
胖咕噜的稞达鸭2 小时前
网络基础:初识TCP/IP协议
网络·网络协议·tcp/ip
xiaoxue..2 小时前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
全栈工程师修炼指南2 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
忧郁的Mr.Li2 小时前
SpringBoot中实现多数据源配置
java·spring boot·后端