项目需要,在Android上实施SSL的双向验证。

准备环境:

Windows 2003 EE;

OpenSSL;

Tomcat 7;

简单的过程:

1.用OpenSSL和keytools做CA,Client,Server的证书、私钥。

2.搭建Tomcat的双向验证的Web服务器。

3.用IE验证SSL的双向验证的有效性。

上面的三步参见下面的文档: tomcat下https ssl 双向认证

唯一的问题是:Tomcat7的配置不同。server.xml

<Connector className="org.apache.catalina.connector.http.HttpConnector" protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" minSpareThreads="5" maxSpareThreads="75" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" clientAuth="true" sslProtocol="TLS" keystoreFile="C:/OpenSSL/server/server_keystore" keystorePass="66666"/>

keystorePass 是自己server_keystore的密码

单向验证把clientAuth="true" 修改为false

4.编写Android的SSL验证程序,但只能做到单向验证服务器的证书。参看下面的链接,其还有源码

Android OpenSSL分析及实例 - zhenyongyuan123的专栏

5.编写Java版本的Client/Server程序验证SSL的双向验证。

java实现 SSL双向认证

6.为了了解SSL的握手过程,测试用OpenSSL命令行直接验证Tomcat的SSL双向验证过程。

用openssl连接TomCat SSL双向验证的命令行。
openssl s_client -connect localhost:8443 -cert client/client-cert.pem -key client/client-key.pem -CAfile ca/ca-cert.pem -state

7.通过上面的过程,发现了步骤4的问题所在,解决了Android访问TomCat的双向SSL验证的WEB服务器。

8.最有一步,直接用Android 的WebView访问Tomcat的双向SSL服务器,正在研究中... 可能需要修改WebView的源码,研究完成单独书写文档表述实现方法。

更多相关文章

  1. android与WEB服务器交互时的SESSION问题
  2. android网络通信之-Http(Android操作HTTP实现与服务器通信)
  3. android一对多通信
  4. Android(安卓)应用安装过程分析
  5. Android系统启动流程(一)解析init进程启动过程
  6. android、apple PUSH 异同比较
  7. Android(安卓)系统(239)---Android(安卓)PMS的创建过程
  8. Android(安卓)init 详细过程分析
  9. Android(安卓)流方式发送XML数据

随机推荐

  1. 理解onMeasure
  2. android 6.0-高通视频通话拨打流程
  3. Android.Tools.Summary
  4. Android特殊字符
  5. Android(安卓)B/S 关于系统兼容性相关问
  6. Android(安卓)CTS 测试总结
  7. adb Not running as root. Try "adb root
  8. Android的快速开发框架afinal
  9. Android(安卓)线程超时的例子
  10. android scaleType的属性