Android 日常开发 (39)javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:

当Android应用遇到javax.net.ssl.SSLHandshakeException,通常是由于服务器证书更新导致的问题。一种临时解决方案是通过修改Okhttp的配置,忽略证书验证。SSLContextUtil工具类可以实现这一功能,但此方法存在安全隐患。后续文章将介绍更安全的处理方式。
摘要由CSDN通过智能技术生成

前言

运维说服务器证书到期了,更新了证书,结果出现了上述问题。

解决方案

通过排查项目代码,发现之前没有做证书信赖验证。这里先提供一个能解决问题但是不是最佳做法的方案,方便大家快速处理问题

项目使用了okhttp
通过对okhttp的builder添加证书校验

OkHttpClient.Builder builder
SSLContext sslContext = SSLContextUtil.getDefaultSLLContext();
  if (sslContext != null) {
   
      SSLSocketFactory socketFactory = sslContext.getSocketFactory();
      builder.sslSocketFactory(socketFactory);
  }
  builder.hostnameVerifier(SSLContextUtil.HOSTNAME_VERIFIER);

SSLContextUtil工具类

/*
 * Copyright 2015 Yan Zhenjie
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicab
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值