原文地址为:android中进行https连接的方式
如果需要验证服务器端证书 (这样能够防钓鱼),我是这样做的,还有些问题问大牛:
a.
b.
问1:这里用"PKCS12"不行
转载地址:点击打开链接
如果不需要验证服务器端证书,直接照这里做
- publicclassextends
- private
- @Override
- publicvoid
- super
- privatevoid
- try
- "TLS"
- nullnewnewnew
- new
- new
- true
- true
- newnew
- new
- whilenull
- catch
- this
- privateclassimplements
- @Override
- publicboolean
- returntrue
- privateclassimplements
- @Override
- publicvoid
- throws
- @Override
- publicvoid
- throws
- @Override
- public
- returnnull
如果需要验证服务器端证书 (这样能够防钓鱼),我是这样做的,还有些问题问大牛:
a.
b.
- "robusoft.cer"
- try
- //读取证书
- "X.509"//问1
- //创建一个证书库,并将证书导入证书库
- "PKCS12""BC"//问2
- nullnull
- "trust"
- return
- finally
- //把咱的证书库作为信任证书库
- new
- new"https"443
- //完工
- new
问1:这里用"PKCS12"不行
答1:PKCS12和JKS是keystore的type,不是Certificate的type,所以X.509不能用PKCS12代替
问2:这里用"JKS"不行。
答2:android平台上支持的keystore type好像只有PKCS12,不支持JKS,所以不能用JKS代替在PKCS12,不过在windows平台上是可以代替的
----------------------------------------------分割线-------------------------------------------------------------------------
1。数据通信时加密,不同平台加密后的结果不同,用的库不同吧(进行相应的修改比较麻烦)
2。采用https,系统自动做好了,简单一些
https与http的通信,在我看来主要的区别在于https多了一个安全验证机制,而Android采用的是X509验证,首先我们需要这重写X509类,建立我们的验证规则、、不过对于特定的项目,我们一般都是无条件信任服务端的,因此我们可以对任何证书都无条件信任(其实本质上我们只是信任了特定url的证书,为了偷懒,才那么选择的)/**
- classimplements
- public
- returnnew
- @Override
- publicvoid
- throws
- @Override
- publicvoid
- throws
- classimplements
- public
- returnnew
- @Override
- publicvoid
- throws
- @Override
- publicvoid
- throws
- staticnewnew
- privatestaticvoid
- try
- "TLS"
- nullnew
- catch
- staticnew
- @Override
- publicboolean
- returntrue