开源框架Android-Query 实现https自签名ssl证书验证
2015-07-11 12:38
531 查看
就两段代码,直接上代码:
protected void onCreate(Bundle savedInstanceState, int layoutResID) { super.onCreate(savedInstanceState); setContentView(layoutResID); javax.net.ssl.SSLPeerUnverifiedException e; mTitlebar = (TitleBarView) findViewById(R.id.titlebar); mTitlebar.setListener(this); AbstractAjaxCallback.setSSF(newSslSocketFactory());//关键代码,实现android-query https自签名验证必须设置ssf mAQuery = new AQuery(this); mProgressDlg = new ProgressDialog(this); mProgressDlg.setIndeterminate(true); mProgressDlg.setCancelable(true); mProgressDlg.setInverseBackgroundForced(false); mProgressDlg.setCanceledOnTouchOutside(true); mProgressDlg.setTitle(R.string.msg_loading); }
private SSLSocketFactory newSslSocketFactory() { try { // Get an instance of the Bouncy Castle KeyStore format KeyStore trusted = KeyStore.getInstance("BKS");//android好像只支持bks // KeyStore trusted = KeyStore.getInstance(KeyStore.getDefaultType()); // 从资源文件中读取你自己创建的那个包含证书的 keystore 文件 InputStream in = getResources().openRawResource(R.raw.testcert); //这个参数改成你的 keystore 文件名 try { // 用 keystore 的密码跟证书初始化 trusted // trusted.load(in, "ipeteipete".toCharArray()); trusted.load(in, "testtest".toCharArray()); } finally { in.close(); } // Pass the keystore to the SSLSocketFactory. The factory is responsible // for the verification of the server certificate. SSLSocketFactory sf = new SSLSocketFactory(trusted); // Hostname verification from certificate // http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506 sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER); // 这个参数可以根据需要调整, 如果对主机名的验证不需要那么严谨, 可以将这个严谨程度调低些. return sf; } catch (Exception e) { throw new AssertionError(e); } }
获取testcert.bks文件的方法:
首先通过浏览器访问https连接,获取证书保存为test.cer.
下载bcprov-jdk15on-146.jar
把什么步骤的两个文件拷贝到通一目录下,然后到该目录下执行以下命令:
keytool -importcert -v -trustcacerts -alias test -file test.cer -keystore testcert.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath ./bcprov-jdk15on-146.jar
-storepass testtest
把生成的testcert.bks拷贝到过程的raw目录下
参考:
Android-Query
开源框架源码分析
为你的Android App实现自签名的 SSL
证书 - OPEN 开发经验库
在Android应用中使用自定义证书的HTTPS连接(上)
- 猛禽的编程艺术 - 博客频道 - CSDN.NET
在Android应用中使用自定义证书的HTTPS连接(下)
- 猛禽的编程艺术 - 博客频道 - CSDN.NET
相关文章推荐
- 十个主要的网络密码破解方法
- 【http】http/1.1 八种请求方式
- 大端法、小端法、网络字节序 转
- VMware网络配置详解
- http 301 和 302 的区别!
- 初中级DBA必须要学会的9个Linux网络命令,看看你有哪些还没用过
- Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败
- 人工神经网络算法的初步理解
- Android WebService 网络编程及解析 SoapObject 数据
- 卷积神经网络CNN
- TCP 、UDP、IP包的最大长度是多少?
- 检测http中的REFERER信息,实现 防盗链
- 简析TCP协议的TIME_WAIT与CLOSE_WAIT状态
- 黑马程序员-java基础网络编程(其它)
- java学习篇------网络编程中的数据读写及发送与接收的机制???
- worpdressd源代码中的profile=“http://gmpg.org/xfn/11”是什么
- 黑马程序员-java基础网络编程(TCP)
- 计算机网络面试题
- 计算机网络面试笔试题
- 黑马程序员-java基础网络编程(UDP)