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);
    }
相关推荐
托比-马奎尔9 分钟前
Redis7内存数据库
java·redis·后端
鹅是开哥32 分钟前
Redis的零食盒满了怎么办?详解缓存淘汰策略
java·redis·缓存·bootstrap
惜.己39 分钟前
jmeter中java.net.ConnectException: Connection refused: connect
java·jmeter·.net
yunmi_1 小时前
分布式文件存储系统FastDFS(入门)
java·分布式·maven·fastdfs
K_i1342 小时前
指针步长:C/C++内存操控的核心法则
java·开发语言
宇宙超粒终端控制中心3 小时前
Java使用easypoi填充数据到word
java·spring boot·spring cloud·java-ee·easypoi
又是忙碌的一天3 小时前
java学习:四大排序
java·学习·排序算法
寒士obj3 小时前
轻量级、高性能的RPC框架——Dubbo
网络协议·rpc·dubbo
想躺平的咸鱼干3 小时前
ollama的下载以及Spring AI Alibaba的ChatModel和ChatClient的流式输出和在idea的实现
windows·https·idea·流式输出·springaialibaba·chatclient·chatmodel
城管不管3 小时前
面试题(1)
java