Android Okhttp3添加https自签名证书以及Glide4

这篇具有很好参考价值的文章主要介绍了Android Okhttp3添加https自签名证书以及Glide4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 没有得到安卓认可的证书颁发机构颁发的证书.
  • 自己颁发的证书, 分临时性的(在开发阶段使用)或在发布的产品中永久性使用的两种.

而只有Android系统认可的机构办法的证书,在使用过程中才不会出现安全提示。

为什么会有人使用自签名的证书呢?

(重要的事重复三遍)免费,免费,免费,不用花费一分钱,在开发阶段写的代码, 测试跟发布的时候也可以用。

三、OkHttp3添加自签名证书

  1. 如何使用自签名证书?

1.获取证书流有两种方式:

  • 将服务端提供的证书文件放到assets文件夹里面,然后获取。(因为是在assets文件下,所以会写入到apk里面)
  • 打开证书文件,将证书里面的内容以字符串的形式通过流写入。(不会写入到apk中)

2.创建秘钥,添加证书进去

3.创建信任管理器,并把秘钥初始化到信任管理器里

4.获取SLL上下文,并把信任管理器初始化到SSL里

5.获取socket工厂,设置到okhttpclient中

6.检验主机名

if (UrlConsts.serverUrl.contains(“https://”)){

InputStream cerInputStream = null;

try {

//方式一:在assets中获取证书

cerInputStream = context.getAssets().open(“ssl.cer”);

//方式二:把字符串通过流的形式获取证书

// cerInputStream = new ByteArrayInputStream(cerText.getBytes(“UTF-8”));

//获取socket工厂

SSLSocketFactory sslSocketFactory = SSLUtil.getSSLSocketFactory(cerInputStream);

//okhttp设置socket工厂

okHttpClientBuilder.sslSocketFactory(sslSocketFactory);

} catch (IOException e) {

e.printStackTrace();

}

}

//检验主机名

okHttpClientBuilder.hostnameVerifier(new HostnameVerifier() {

@Override

public boolean verify(String hostname, SSLSession session) {

return true;

}

});

public class SSLUtil {

/**

  • 返回SSLSocketFactory

  • @param certificates 证书的输入流

  • @return SSLSocketFactory

*/

public static SSLSocketFactory getSSLSocketFactory(InputStream… certificates) {

return getSSLSocketFactory(null,certificates);

}

/**

  • 双向认证

  • @param keyManagers KeyManager[]

  • @param certificates 证书的输入流

  • @return SSLSocketFactory

*/

public static SSLSocketFactory getSSLSocketFactory(KeyManager[] keyManagers, InputStream… certificates) {

try {

//获取证书工厂

CertificateFactory certificateFactory = CertificateFactory.getInstance(“X.509”);

//创建秘钥,添加证书进去

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(null);

int index = 0;

for (InputStream certificate : certificates) {

String certificateAlias = Integer.toString(index++);

keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate));

try {

if (certificate != null) certificate.close();

} catch (IOException e) {

e.printStackTrace();

}

}

//创建信任管理工厂

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

//初始化信任管理器

trustManagerFactory.init(keyStore);

//获取SSL上下文对象

SSLContext sslContext = SSLContext.getInstance(“TLS”);

//初始化信任管理器

sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(), new SecureRandom());

//获取socket工厂

SSLSocketFactory socketFactory = sslContext.getSocketFactory();

return socketFactory;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

测试运行,完美解决。

2.信任所有证书(不建议使用)

服务端提供的证书文件,如果服务端更改了需要客户端进行相应的更改,否则无法请求服务端数据。如果想不换证书可以继续访问,可以通过X509TrustManager信任所有的证书,以达到客户端不换证书文件就能获取到服务端数据,但不建议这样使用!!!

/**

*信任所有证书(不建议使用)

  • @return

*/

public static SSLSocketFactory getAllSSLSocketFactory(){

//创建X509信任管理器

TrustManager[] trustManagers = new TrustManager[]{

new X509TrustManager() {

@Override

public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

}

@Override

public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

}

@Override

public X509Certificate[] getAcceptedIssuers() {

return new X509Certificate[0];

}

}

};

try {

//获取SSL上下文对象

SSLContext sslContext = SSLContext.getInstance(“TLS”);

//初始化无信任管理器

sslContext.init(null, trustManagers, new SecureRandom());

//获取socket工厂

SSLSocketFactory socketFactory = sslContext.getSocketFactory();

return socketFactory;

} catch (NoSuchAlgorithmException | KeyManagementException e) {

e.printStackTrace();

}

return null;

}

四、Glide4.0以上 添加自签名证书

Glide 直接加载没有权威机构颁发的证书https的URL会直接抛出错误SSLHandshakeException(CertPathValidatorException证书路径验证器异常)

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

看到CertPathValidatorException这个异常,不用多说也知道什么原因导致的,所以我们需要对Glide内部的Okhttp3进行https自签名。

  1. 从Glide官网查到,需 添加Glide需要的依赖

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

// Glide图片加载库

api ‘com.github.bumptech.glide:glide:4.11.0’

// Glide需要处理注解时的依赖库,用于处理注解并生成java类

annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’

// Glide集成OkHttp时需要使用的库

api ‘com.github.bumptech.glide:okhttp3-integration:4.11.0’

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

最后

跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

Android Okhttp3添加https自签名证书以及Glide4,程序员,android,https,网络协议

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-MCtIkE3e-1711538416227)]文章来源地址https://www.toymoban.com/news/detail-853050.html

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

到了这里,关于Android Okhttp3添加https自签名证书以及Glide4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java okHttp 忽略Https证书验证

    我们在和第三方系统交互时,Https url会出现找不到证书的问题。unable to find valid certification path to requested target. 我尝试过很多方法比如添加证书等,但是最后都以失败告终。只能退而求其次忽略指定url的证书验证,亲测好用! 创建OkHttpUtil类,代码如下: 然后我们之前有提到,

    2024年02月09日
    浏览(42)
  • Openfeign和okHttp的https请求忽略ssl证书认证

    在通过feign和okhttp请求外部接口时,出现了以下问题: Servlet.service() for servlet [dispatcherServlet] in context with path [/xxxx] threw exception [Request processing failed; nested exception is feign.RetryableException: java.security.cert.CertificateException: No subject alternative DNS name matching www.xx.xx.cn found. executing GET htt

    2024年02月07日
    浏览(50)
  • web3j 引用报错:okhttp3.RequestBody okhttp3.RequestBody.create(java.lang.String, okhttp3.MediaType)解决

    在做区块链开发时引用了web3j,而web3j中又引用了OKhttp,在程序发起请求时报错如下 我项目中引用的web3j包如下 其实具体web3j哪个版本感觉都有类似问题,我尝试过4.6.3版本到5.0.0都会报上述错。然后看项目依赖发现引用的OKhttp版本是3.14.9,网上说要将OKhttp版本号更换到4.3.1以上

    2024年02月09日
    浏览(34)
  • java通过okhttp方式实现https请求的工具类(绕过证书验证)

    引入相关依赖包 2.1、跳过证书配置类 跳过证书配置类代码 2.2、okhttp方式的 https工具类 okhttp方式的 https工具类代码 测试代码 测试输出结果

    2024年01月23日
    浏览(83)
  • Java OkHttp3工具类

    okhttp3现在基本都在用的一个底层网络框架。这篇博客主要的目的就是将OKHttp3这个框架在开发中能用到的地方都记录下来,也当一个工具文档为日后使用时查找方便。 https://github.com/toutouge/javademosecond/tree/master/hellolearn

    2024年03月17日
    浏览(34)
  • Java之okhttp3请求方式

    在java开发中,发起http请求是非常常见的需求,常用的有HttpClient,下面聊一下okhttp3的请求方式。 1、引入okhttp3依赖 2、提供springboot工程及http接口 3、http请求 4、请求结果 get请求 post请求 form表单请求 可见发起http请求还是挺方便的,感兴趣的小伙伴可以试试~~~///( v )~~~

    2024年02月13日
    浏览(39)
  • Spring boot 使用 Okhttp3

    Spring boot 集成 okhttp3, 使用 http,https 在项目调用第三方服务是在所难免的,运用传统类型的Http调用,封装繁琐,代码量多还不简洁,避免一次一次的 找 度娘, 小记一下。 引入jar OkRestClient 工具类 OkHttp动态配置 使用 OkHttp 使用OkHttp 时 只需要注入 @AutoWired OkRestClient okRestC

    2024年02月11日
    浏览(46)
  • Https、CA证书、数字签名

    Https Http协议 Http协议是目前应用比较多应用层协议,浏览器对于Http协议已经实现。Http协议基本的构成部分有 请求行 : 请求报文的第一行 请求头 : 从第二行开始为请求头内容的开始部分。每一个请求头都是由K-V键值对组成。 请求体: 请求头完成后以空行结束、从空行开始

    2024年02月12日
    浏览(41)
  • https-OPenSSL证书生成及自签名证书

    目录 SSL/TLS 1、搭建OPenssl服务器 1.1、下载  1.2、安装下载好的exe程序 2、服务器端证书-生成key、CSR、CRT 2.1、进入如下目录,执行cmd  2.2、生成一个私钥key  2.3、由生成的私钥key生成一个待签名的CSR证书文件(公钥)  2.4、查看证书内容 3、自建CA证书 3.1、创建CA私钥 3.2、生成C

    2024年02月08日
    浏览(43)
  • com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

    维护者 square组织 许可证类型 Apache License 2.0 首次发布 2016 年 1 月 2 日 最新发布时间 2023 年 4 月 23 日 GitHub Star 44403 GitHub Fork 9197 依赖包 5,582 依赖存储库 77,217 com.squareup.okhttp3:okhttp 一个开源的 HTTP 客户端库,可以用于 Android 和 Java 应用程序。它提供了一种简单而强大的方式来发

    2024年02月10日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包