Android HttpClient 访问 Tomcat双向SSL验证服务器.doc_第1页
Android HttpClient 访问 Tomcat双向SSL验证服务器.doc_第2页
Android HttpClient 访问 Tomcat双向SSL验证服务器.doc_第3页
Android HttpClient 访问 Tomcat双向SSL验证服务器.doc_第4页
Android HttpClient 访问 Tomcat双向SSL验证服务器.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android HttpClient 访问 Tomcat双向SSL验证服务器项目需要,在Android WebView上访问Tomcat SSL双向验证。本文只解决了Android HttpClient 访问Tomcat双向SSL验证服务器。环境准备:l Windows 2003 EE;l OpenSSL;l Tomcat 7;过程记录如下:1.用OpenSSL和keytools做CA,Client,Server的证书、私钥。2.搭建Tomcat的双向验证的Web服务器。3.用IE验证SSL的双向验证的有效性。上面的三步参见文档: tomcat下https ssl 双向认证唯一的问题是:Tomcat7的配置不同。server.xml 加入如下XML代码: keystorePass 是自己server_keystore的密码 单向验证把clientAuth=true 修改为false4.编写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 clientclient-cert.pem -key clientclient-key.pem -CAfile caca-cert.pem -state openssl s_client -connect localhost:8443 -cert clientclient-cert.pem -key clientclient-key.pem -CAfile caca-cert.pem -state7.通过上面的过程,发现了步骤4的问题所在,解决了Android访问TomCat的双向SSL验证的WEB服务器。8.最有一步,直接用Android 的WebView访问Tomcat的双向SSL服务器,正在研究中. 可能需要修改WebView的源码,研究完成单独书写文档表述实现方法。tomcat下https ssl 双向认证 一、配置环境1.1 Tomcat简介Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。1.2 SSL(Server Socket Layer)简介在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断发展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。 之后IETF()对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。1.3 SSL工作原理SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https:/ip:port/的方式来访问。当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下: 1. 用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。 2. 服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。 3. 客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。 4. 客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。 5. 如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。 6. 如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的pre-master secret,并用它通过某些算法生成本次会话的master secret。 7. 客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。 8. 客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。 9. 服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。 10. 本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。1.4 所需软件包Tomcat 4.0.6用途:Web Server。下载:/builds/jakarta-tomcat-4.0/release/v4.0.6/bin/jakarta-tomcat-4.0.6.exeJDK1.4.1_02其中已经包含了JSSE的最新版本。JSSE 1.0.3_01用途:用来产生Tocmcat使用的密钥对(keystore)。下载: /products/jsse/Openssl 0.9.7b用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。下载:/1.5 软件包的安装 Tomcat 4.0.6安装(略)JSSE 1.0.3_01安装1. 确定有JDK1.2以上版本(java -version);2. 下载JSSE (注意,JDK1.4已经自带JSSE了,不需要),一般来说都只能download全球版本(还有个版本是美国/加拿大版本,加密位数没有限制);3. 安装JSSE,主要是把JSSE包内的lib/*.jar拷贝到JAVA_HOME/jre/lib/ext/下,并且加入到CLASSPATH中;4. 编辑JAVA_HOME/jre/lib/security/java.security文件,主要是添加: vider.1=vider.Sun vider.2=ernal.ssl.Provider5. 确定你的系统有下面文件的其中一个:1)JAVA_HOME/jre/lib/security/jssecacerts或者 2)JAVA_HOME/jre/lib/security/cacerts 你的系统已经安装好了JSSE,下面就是针对不同的server有不同的配置了。Openssl 0.9.7b安装请阅读其解压缩文档中的INSTALL文件安装openssl。或者可以参考文件“openssl在windows平台的安装编译.txt”。二、配置步骤2.1 建立自己的CA证书(假设openssl安装到了c:openssl)1在适当的地方建立自己的CA目录,例如:ca2. 我的电脑-右键-属性-高级-环境变量-新建-administrator用户变量-变量名:OPENSSL_CONF-变量值:C:f2生成CA密钥openssl genrsa -out ca/ca-key.pem 1024genrsa 产生密钥命令 out密钥文件输出路径 1024 密钥位数3生成待签名的证书openssl req -new -out ca/ca-req.csr -key ca/ca-key.pemreq产生证书命令-new新生成-out证书文件输出路径-key私钥文件路径4用CA私钥自签名openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 365x509签发x509证书命令-req输入待签发证书-in输入待签发证书文件路径-out产生x509证书文件输出路径-signkey自签发密钥文件路径-days证书有效期CA签发跟证书-Cakey根证书密钥文件 -CAcreateserial创建序列号2.2 配置Tomcat 4.X2.2.1建立服务器证书注 在本文中用符号%JDK_HOME%来表示JDK的安装位置,用符号%TCAT_HOME% 表示Tomcat的安装位置。1.建立工作目录在目录下建立自己的server目录,例如:server2.生成server密钥对C:j2sdk1.4.1_01binkeytool -genkey -alias tomcat -validity 365 -keyalg RSA -keysize 1024 -keystore server/server_keystore -genkey产生密钥对-alias密钥对别名-validity密钥有效期-keyalg密钥算法参数-keysize密钥位数-keypass密钥保护密码-storepass存储密码-dname别名相关附加信息-keystore密钥存储文件路径注 -alias后的tomcat是密钥对的名字可替换为自己需要的名字;-keypass与-storepass后的密码为保护密码必须6位;其中cn是服务器的名字一定要与WEB服务器中设置的一样。3.生成待签名证书C:j2sdk1.4.1_01binkeytool -certreq -alias tomcat -sigalg MD5withRSA -file server/server.csr -keypass allcom -keystore server/server_keystore -storepass allcom-certreq产生待签名证书-alias证书别名-sigalg证书算法参数-file 产生文件输出路径-keypass密钥保护密码-keystore存储文件路径-storepass存储密码4.拷贝C:opensslappsca-cert.srl文件到ca目录5.用CA私钥签名openssl x509 -req -in server/server.csr -out server/server-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 365 2.2.2将CA根证书和服务器证书导入Tomcat1. 导入CA根证书C:j2sdk1.4.1_01binkeytool -import -v -trustcacerts -storepass allcom -alias allcom_ca_root -file ca/ca-cert.pem -keystore server/cacerts-import导入命令 -vtrustcacerts导入信任证书 storepass存储密码-alias证书别名-file证书文件路径-keystore导入文件路径-alias为CA根证书的别名。2.拷贝cacerts文件到C:j2sdk1.4.1_01jrelibsecurity目录3.导入服务器证书C:j2sdk1.4.1_01binkeytool -import -v -trustcacerts -storepass allcom -alias tomcat -file server/server-cert.pem -keystore server/server_keystore注 此时的-storepass为生成证书时输入密码。-alias为服务器证书的别名。4.查看证书查看CA证书C:j2sdk1.4.1_01binkeytool -list -keystore server/cacerts查看服务器证书C:j2sdk1.4.1_01binkeytool -list -keystore server/server_keystore2.2.3修改Tomcat的配置文件1.把文件server/ server_keystore复制到目录%TCAT_HOME%/conf下2.修改conf目录下server.xml文件找到以下内容去掉其注释并修改。2.3 配置IE客户端2.3.1建立Client证书1.建立自己的Client目录,例如:client2.生成Client密钥对openssl genrsa -out client/client-key.pem 10243.生成待签名的证书openssl req -new -out client/client-req.csr -key client/client-key.pem4.用CA私钥签名openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-ce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论