开源框架Android-Query 实现https自签名ssl证书验证

本文介绍了如何使用Android-Query框架处理自签名SSL证书验证。首先,通过浏览器获取并保存证书,接着下载bcprov-jdk15on-146.jar。将证书和库文件放在同一目录,执行特定命令生成testcert.bks文件,最后将此文件拷贝到Android项目的raw目录以实现验证。
摘要由CSDN通过智能技术生成
就两段代码,直接上代码:
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目录下

参考:











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值