OkHttp3 配置Https证书请求

本文介绍如何使用OkHttp进行HTTPS请求并验证证书。通过代码示例展示了如何设置证书工厂、密钥存储、信任管理器等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

又有一段时间没更新咯,也是自己实在是懒。也想到发布文章的话不知道该发布什么。就时间间隔了这么长的时间,这段时间稍微没那么忙了就抽空写篇文章记录一下。也不是什么高科技高级技术。好了废话不多说直接来个正文吧

正文:

直接上代码

/** 
     * 关联Https请求验证证书 
     * 
     * @param okHttpClient 
     */  
    public OkHttpClient SSLContext(OkHttpClient.Builder okHttpClient){  
        ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)  
                .allEnabledTlsVersions()  
                .allEnabledCipherSuites()  
                .build();  
        try {  
            //设置证书类型  
            CertificateFactory factory = CertificateFactory.getInstance("X.509", "BC");  
            //打开放在main文件下的 assets 下的Http证书  
            InputStream stream = getAssets().open("demo.crt");  
            Certificate certificate = factory.generateCertificate(stream);  
            //证书类型  
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());  
            //授信证书 , 授信证书密码(应该是服务端证书密码)  
            keyStore.load(null, null);  
            keyStore.setCertificateEntry("certificate",certificate);  
  
            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());  
            trustManagerFactory.init(keyStore);  
  
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());  
            //证书密码(应该是客户端证书密码)  
            keyManagerFactory.init(keyStore, "555".toCharArray());  
  
            SSLContext sslContext = SSLContext.getInstance("TLS");  
            sslContext.init(keyManagerFactory.getKeyManagers(),trustManagerFactory.getTrustManagers(),new SecureRandom());  
            SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();  
  
            okHttpClient.connectionSpecs(Collections.singletonList(spec))  
                    .sslSocketFactory(sslSocketFactory, Platform.get().trustManager(sslSocketFactory))  
                    .hostnameVerifier(new HostnameVerifier() {  
                        @Override  
                        public boolean verify(String s, SSLSession sslSession) {  
                            return true;  
                        }  
                    });  
  
            return okHttpClient.build();  
  
        } catch (CertificateException e) {  
            e.printStackTrace();  
        } catch (NoSuchProviderException e) {  
            e.printStackTrace();  
        } catch (KeyStoreException e) {  
            e.printStackTrace();  
        } catch (NoSuchAlgorithmException e) {  
            e.printStackTrace();  
        } catch (KeyManagementException e) {  
            e.printStackTrace();  
        } catch (UnrecoverableKeyException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return null;  
    }

好了代码就是这一些,再加几条一些哥们写的.

这篇文章稍简单很多没有做过多的解释,大神勿喷

拓展:

1.用keytool创建Keystore和Trustsotre文件

2. java中 SSL认证和keystore使用

3. Okhttp3 配置Https访问(使用PKCS12)证书

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WL-鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值