ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:22.21KB ,
资源ID:18334473      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18334473.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用Tomcat+Openssl在Android环境下完成CA签名的双向认证技术指导书Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用Tomcat+Openssl在Android环境下完成CA签名的双向认证技术指导书Word文档格式.docx

1、4.3 签发客户证书 84.4 客户证书转换 84.5 查看证书 85 双向认证配置: 95.1 Android客户端需要使用的文件 95.2 服务端需要使用的文件 95.3 配置tomcat 服务器 95.4 验证 95.4.1 启动tomcat 95.4.2 Android中验证 95.4.3 利用PhoneGap插件 116 经验总结 121 配置环境1.1 Tomcat简介Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分

2、软件开发商的认可,成为目前比较流行的web应用服务器。1.2 SSL(Server Socket Layer)简介在网络上信息在源-宿的传递过程中会经过其它的计算机。一般情况下,中间的计算机不会监听路过的信息。但在使用网上银行或者进行信用卡交易的时候有可能被监视,从而导致个人隐私的泄露。由于Internet和Intranet体系结构的原因,总有某些人能够读取并替换用户发出的信息。随着网上支付的不断发展,人们对信息安全的要求越来越高。因此Netscape公司提出了SSL协议,旨在达到在开放网络(Internet)上安全保密地传输信息的目的,这种协议在WEB上获得了广泛的应用。 之后IETF(ww

3、w.ietf.org)对SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非常微小。1.3 OpenSSL简介众多的密码算法、公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法。果真如此,在对你表示敬佩的同时,还是忍不住提醒你:这是一个令人望而生畏的过程。这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成这项有

4、趣而可怕的工作,但肯定不是一年两年的问题。 Eric A. Young和Tim J. Hudson,自1995年开始编写后来具有巨大影响的OpenSSL软件包,更令我们高兴的是,这是一个没有太多限制的开放源代码的软件包,这使得我们可以利用这个软件包做很多事情。1998年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,到目前为止,OpenSSL的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持。OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台

5、使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。不过,对于目前新成长起来的C+程序员,可能对于C语言的代码不是很习惯,但习惯C语言总比使用C+重新写一个跟OpenSSL相同功能的软件包轻松不少。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供

6、测试或其它目的使用。对称加密算法OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。非对称加密算法OpenSSL一共实现了4种非对称

7、加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。信息摘要算法OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。1.4 所需软件包1.4.1 Tomcat 6.0用途:Web Server。1.4.2 给JDK加上Bounc

8、yCaslet库1. 把bcprov-jdk16-146.jar放到jdk1.6.xxjrelibext目录下(在jdk1.7下也可以使用)2. 给jdk1.6.xxjrelibsecurity目录中的java.security文件增加提供者:security.provider.n=org.bouncycastle.jce.provider.BouncyCastleProvidern为优先级数字,顺着原来的数字往下些,可调整顺序但不可隔空跳过数字。1.4.3 Keytool命令详解英文:中文:1.5 参考资料TomcatSSLOpenssl的相关资料。2.1 初始化设置建立CA根证书目录及相关

9、初始化设置d:mkdir cacd cacamkdir certsmkdir crlmkdir newcertsmkdir privateecho 0index.txtECHO 处于打开状态。echo 01serialopenssl rand -out private/.rand 1000Loading screen into random state - done2.2 构建根证书下述过程需要输入密码,一律输入ca12342.2.1 生成根证书私钥openssl genrsa -aes256 -out private/ca.key.pem 20482.2.2 生成根证书请求openssl r

10、eq -new -key private/ca.key.pem -out private/ca.csr -subj /C=cn/ST=bj/L=bj/O=wd/OU=wd/CN=wdmobileCA2.2.3 签发根证书(自签名方式)openssl x509 -req -days 10000 -sha1 -extensions v3_ca -signkey private/ca.key.pem -in private/ca.csr -out certs/ca.cer -trustout2.2.4 根证书转换openssl pkcs12 -export -clcerts -in certs/ca

11、.cer -inkey private/ca.key.pem -out certs/ca.p12keytool -importkeystore -srckeystore certs/ca.p12 -srcstoretype PKCS12 -deststoretype BKS -destkeystore certs/ca.bks2.2.5 导出CA的公钥证书keytool -importcert -trustcacerts -alias ca -file certs/ca.cer -keystore certs/ca_public.bks -storetype bks2.2.6 查看证书keyt

12、ool -list -keystore certs/ca.p12 -storetype pkcs12 -v -storepass ca1234keytool -list -keystore certs/ca.bks -storetype bks -v -storepass ca1234keytool -list -keystore certs/ca_public.bks -storetype bks -v -storepass ca12343 为服务器生成证书下述过程需要输入密码,一律输入wa12343.1 生成服务器私钥openssl genrsa -aes256 -out private/

13、server.key.pem 20483.2 生成服务器证书请求openssl req -new -key private/server.key.pem -out private/server.csr -subj /C=cn/ST=bj/L=bj/O=wd/OU=wd/CN=10.0.73.573.3 签发服务器证书openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private

14、/server.csr -out certs/server.cer -trustout此处输入ca.key.pem的密码为ca1234。3.4 服务器证书转换openssl pkcs12 -export -clcerts -inkey private/server.key.pem -in certs/server.cer -out certs/server.p12keytool -importkeystore -srckeystore certs/server.p12 -srcstoretype PKCS12 -deststoretype BKS -destkeystore certs/ser

15、ver.bks3.5 查看证书keytool -list -keystore certs/server.p12 -storetype pkcs12 -v -storepass wa1234keytool -list -keystore certs/server.bks -storetype bks -v -storepass wa12344 为Android客户端生成证书下述过程需要输入密码,一律输入cl12344.1 生成客户私钥openssl genrsa -des3 -out private/client.key.pem 20484.2 生成客户证书请求openssl req -new

16、-key private/client.key.pem -out private/client.csr -subj /C=cn/ST=bj/L=bj/O=wd/OU=wd/CN=wdmobile4.3 签发客户证书 openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA certs/ca.cer -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in private/client.csr -out certs/client.cer -trustout4.4 客户证书

17、转换openssl pkcs12 -export -in certs/client.cer -inkey private/client.key.pem -out certs/client.p12生成Android可以使用的Bks格式密钥库:keytool -importkeystore -srckeystore certs/client.p12 -srcstoretype PKCS12 -deststoretype BKS -destkeystore certs/client.bks4.5 查看证书keytool -list -keystore certs/client.p12 -storet

18、ype pkcs12 -v -storepass cl1234keytool -list -keystore certs/client.bks -storetype bks -v -storepass cl12345.1 Android客户端需要使用的文件client.bks ca_public.bks5.2 服务端需要使用的文件server.bks ca_public.bks5.3 配置tomcat 服务器打开tomcat 根目录下的 /conf/server.xml ,找到如下配置段,修改如下: 5.4 验证5.4.1 启动tomcat修改tomcat6.0bincatalina.bat文

19、件,如:set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -D.debug=ssl 中的红色部分。然后启动tomcat可以查看SSL请求交互的详细日志信息。5.4.2 Android中验证主要有3个步骤:0.将ca.bks和client.bks放到res/raw目录下1. 双向认证初始化安全环境,2.请求待访问数据。如下面的代码段:1. /* * 双向认证初始化安全环境 * param resid_key * param password_key * param resid * param password * throws Exception */ pri

20、vate void initKey2(int resid_key,String password_key, int resid,String password) throws Exception KeyStore keyStore = KeyStore.getInstance(CLIENT_KEY_KEYSTORE); keyStore.load( MyApplication.getInstance().getContext() .getResources().openRawResource( resid_key), password_key.toCharArray(); KeyStore t

21、rustStore = KeyStore.getInstance(CLIENT_TRUST_KEYSTORE); trustStore.load( resid), password.toCharArray(); SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore,password_key,trustStore); Scheme sch = new Scheme(, socketFactory, 8443); hc.getConnectionManager().getSchemeRegistry().register(sc

22、h); /* * 以POST方式请求数据 * param reqData 请求数据 * param url 请求地址 * return private String postData(String reqData,String url) throws Exception HttpPost hr = new HttpPost(url); hr.setEntity(new StringEntity(reqData); HttpResponse hres = hc.execute(hr); return EntityUtils.toString(hres.getEntity(),utf-8); 2.

23、 try initKey2(R.raw.client,CLIENT_KEY_PASSWORD,R.raw.ca_public,CLIENT_TRUST_PASSWORD); result = postData(reqData,url); Log.i(post result: , result); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); 5.4.3 利用PhoneGap插件5.4.3.1 在res/xml/plugins.xml加入一行5.4.3.2 生成wdmobile.certs.j

24、svar WdCertsPlugin = function() ;/way:0,无认证;1,单向认证;2,双向认证。/reqData:请求数据/url:访问地址/success:成功时的回调函数/error:失败时的回调函数WdCertsPlugin.prototype.post = function(way,port,reqData,url, success, error) Cordova.exec(success, error, , post, way,port,reqData,url );Cordova.addConstructor(function() Cordova.addPlugi

25、n(wdCertsPlugin, new WdCertsPlugin(););5.4.3.3 在WDCertsPlugin.java中添加代码段 String reqData = data.getString(0); String url = data.getString(1); JSONObject fileInfo = new JSONObject(); /数据结果保存到json中 fileInfo.put(result, post (reqData,url); result = new PluginResult(Status.OK, fileInfo);5.4.3.4 在页面调用 win

26、dow.plugins.wdCertsPlugin.post(2,strs,url2, function(data, textStatus) var strData = JSON.stringify(data); if ($(resultCode, strData).text() = 0000) alert(https登录成功! wdMobileUi.mainui(); else https登录失败rn失败信息:+$(, strData).text() + $(resultDesc, strData).text(); wdMobileUi.loginui(); , function(xmlHttpRequest, textStatus, errorThrown) alert(https网络异常或者远程服务器不可用! + xmlHttpRequest.status); ) ;6 经验总结经过大量的尝试,发现如果使用CA签名的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1