关于使用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 ):
第五步:启动或重新启动服务器(tomact),启动成功后,运行Android程序,顺利的话就可以看到tomact的首页源码或者自己设置的成功标志
附:以下是可能出现的异常
1、
该异常出现的原因是该使用server.cer的地方使用错误,导致出现这个错误。如,证书和服务器所使用的证书不一致。如,使用的是其他文件,不是server.cer,总之证书不正确导致的该错误
2、
该异常出现的原因是没有对证书进行验证或者是验证了错误域名,如出现此种错误请仔细阅读第五步操作
3、
可能会因为bcprov-jdk16-146.jar文件导致Android项目构建失败,删除即可。当重新生成证书的时候再把该文件复制到原有的位置,然后生成证书,重启tomcat等流程
4、
如果出现其他错误请仔细阅读文档或留言
注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、
如果出现其他错误请仔细阅读文档或留言
相关文章推荐
- 关于使用由CA机构(EJBCA)颁发的证书实现SLLSocket双向认证服务端报null cert chain的解决方案
- 关于PPC或PDA无法打开文件。可能它不是使用可信证书进行签名的,或找不到它的某个组件
- windows mobile “……不是使用可信证书进行签名……”问题
- 关于使用AE进行图层与oracle外表连接制作专题图的一些问题
- 关于数字证书和数字签名的一些认识
- 使用Java进行双向认证的SSL链接以及使用OpenSSL生产证书链
- 关于缓存使用中的一些看法
- SSL双向认证以及证书的制作和使用
- 如何使用USB Key中的证书对数据进行签名
- 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法
- 关于 KVO 和 KVC 的一些总结 以及使用KVC进行字典和模型的互相转换
- 关于使用myeclipse进行export 打包的一些注意点
- SSL双向认证以及证书的制作和使用
- OpenSSL学习之使用个人信息数字证书(PFX)进行签名和验证
- SSL使用windows证书库中证书实现双向认证
- SSL使用windows证书库中证书实现双向认证
- 使用证书对PowerShell脚本进行签名
- android如何使用release证书替换debug证书签名来调试
- iOS 关于证书,真机调试的一些总结
- 使用Volley实现Https请求, Volley SSL 双向自认证证书请求。