前言
运维说服务器证书到期了,更新了证书,结果出现了上述问题。
解决方案
通过排查项目代码,发现之前没有做证书信赖验证。这里先提供一个能解决问题但是不是最佳做法的方案,方便大家快速处理问题
项目使用了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 applicable law or agreed to in writing,

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





