您的位置:首页 > 理论基础 > 计算机网络

关于使用OKHttp调试自签名证书进行双向认证的一些看法

2016-10-25 16:53 417 查看
注1:调试过程如果客户端和服务端都不熟悉的话最好由一个人完成

注2:本文只是对以下链接内容的完善及其解释

注3:本文是基于OKHttp上进行的代码调试

注4:本文是自签名证书,属于测试代码,并没有在正式环境上使用

注5:建议读者仔细尝试过相关链接后再进行阅读本文

注6:可能会使用到startup.bat命令启动tomcat

相关链接:

《基于Java的https双向认证,android上亦可用》

http://blog.csdn.net/lmj623565791/article/details/48129405

《Android Https相关完全解析 当Okhttp遇上Https》

https://my.oschina.net/jjface/blog/339144

第一步:搭建服务器,服务器搭建仅仅需要一个tomcat ,配置很简单,可以百度一下

第二步:通过《基于Java的https双向认证,android上亦可用》一文中的命令行进行证书生成,无需更改命令,最终生成的证书有client.cer,client.p12,client.truststore,server.cer,server.keystore这五个文件。

第三步:参考《Android Https相关完全解析 当Okhttp遇上Https》一文中的方式下载portecle-1.9.zip文件并解压,然后点击portecle.jar文件,打开GUI界面,然后通过《Android Https相关完全解析 当Okhttp遇上Https》一文中的操作方式将client.p12转换成client.bks文件

第四步:将server.cer和client.bks复制进Android项目的assets文件夹下,参考如下代码即可进行修改

(以下代码参考https://github.com/hongyangAndroid/okhttputils ):

InputStream server = null;
InputStream client = null;
try {
server = getAssets().open("server.cer");
client = getAssets().open("client.bks");
}catch (IOException e){
e.printStackTrace();
}
//设置可访问所有的https网站
HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(new InputStream[]{server}, client, "123456");
OkHttpClient okHttpClient =  new OkHttpClient.Builder().
sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)
.hostnameVerifier(new UnSafeHostnameVerifier())
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
}
public class UnSafeHostnameVerifier implements
HostnameVerifier{
@Override
public boolean verify(String hostname, SSLSession session)
{
HostnameVerifier hv =  HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("www.itjoyee.com", session);
}
}


第五步:启动或重新启动服务器(tomact),启动成功后,运行Android程序,顺利的话就可以看到tomact的首页源码或者自己设置的成功标志

附:以下是可能出现的异常

1、

该异常出现的原因是该使用server.cer的地方使用错误,导致出现这个错误。如,证书和服务器所使用的证书不一致。如,使用的是其他文件,不是server.cer,总之证书不正确导致的该错误

2、

该异常出现的原因是没有对证书进行验证或者是验证了错误域名,如出现此种错误请仔细阅读第五步操作

3、



可能会因为bcprov-jdk16-146.jar文件导致Android项目构建失败,删除即可。当重新生成证书的时候再把该文件复制到原有的位置,然后生成证书,重启tomcat等流程

4、

如果出现其他错误请仔细阅读文档或留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: