三、OkHttp3添加自签名证书
- 如何使用自签名证书?
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) {
re