android – 如何在Retrofit中使用ssl证书进行https请求

android – 如何在Retrofit中使用ssl证书进行https请求,第1张

概述我有一个.p12证书文件,我使用 SSL Converter将其转换为.pem证书文件.然后我在我的android代码中使用那个pem证书文件,如下所示: OkHttpClient okHttpClient = new OkHttpClient(); try { CertificateFactory cf = CertificateFactory.getIn 我有一个.p12证书文件,我使用 SSL Converter将其转换为.pem证书文件.然后我在我的androID代码中使用那个pem证书文件,如下所示:
OkhttpClIEnt okhttpClIEnt = new OkhttpClIEnt();        try {            CertificateFactory cf = CertificateFactory.getInstance("X.509");            inputStream instream = context.getResources().openRawResource(R.raw.pem_certificate);            Certificate ca;            ca = cf.generateCertificate(instream);            KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());            kStore.load(null,null);            kStore.setCertificateEntry("ca",ca);            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());            tmf.init(kStore);            SSLContext sslContext = SSLContext.getInstance("TLS");            sslContext.init(null,tmf.getTrustManagers(),null);            okhttpClIEnt.setSslSocketFactory(sslContext.getSocketFactory());        } catch (CertificateException                | KeyStoreException                | NoSuchAlgorithmException                | IOException                | KeyManagementException e) {            e.printstacktrace();        }        baseURL = endpoint;        RestAdapter restAdapter = new RestAdapter.Builder()                .setEndpoint(baseURL)                .setClIEnt(new OkClIEnt(okhttpClIEnt))                .build();        service = restAdapter.create(dishService.class);

但是这段代码不起作用.它在“ca = cf.generateCertificate(instream);”行中失败了.使用CertificateException消息.

解决方法 也许您在R.raw.pem_certificate有问题…

1)尝试使用openssl从服务器获取原始公共证书:
openssl s_clIEnt -connect {HOSTname}:{PORT} -showcerts

(详情请看这里:https://superuser.com/questions/97201/how-to-save-a-remote-server-ssl-certificate-locally-as-a-file)

2)如何使用自定义SSL证书设置Retrofit2
https://adiyatmubarak.wordpress.com/tag/add-ssl-certificate-in-retrofit-2/

或改造1:
https://number1.co.za/use-retrofit-self-signed-unknown-ssl-certificate-android/

PS:它对我有用,请不要将PEM文件转换为BKS.

总结

以上是内存溢出为你收集整理的android – 如何在Retrofit中使用ssl证书进行https请求全部内容,希望文章能够帮你解决android – 如何在Retrofit中使用ssl证书进行https请求所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存