当前位置: 代码迷 >> Android >> Android 访问 Tomcat SSL双向应验服务器
  详细解决方案

Android 访问 Tomcat SSL双向应验服务器

热度:533   发布时间:2016-05-01 12:28:05.0
Android 访问 Tomcat SSL双向验证服务器。
收藏
项目需要,在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

view plaincopy to clipboardprint?
01.<Connector   
02.    className="org.apache.catalina.connector.http.HttpConnector" 
03.    protocol="org.apache.coyote.http11.Http11NioProtocol"        
04.           port="8443" minSpareThreads="5" maxSpareThreads="75"        
05.           enableLookups="true" disableUploadTimeout="true"          
06.           acceptCount="100"  maxThreads="200"        
07.           scheme="https" secure="true" SSLEnabled="true"        
08.           clientAuth="true" sslProtocol="TLS"        
09.           keystoreFile="C:/OpenSSL/server/server_keystore"       
10.           keystorePass="66666"/>  
<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双向验证的命令行。

view plaincopy to clipboardprint?
01.openssl s_client -connect localhost:8443 -cert client\client-cert.pem -key client\client-key.pem -CAfile ca\ca-cert.pem -state 
  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的源码,研究完成单独书写文档表述实现方法。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/win2k3net/archive/2011/01/26/6165690.aspx
  相关解决方案