你的位置:首页 > 软件开发 > 操作系统 > Tomcat单向Https验证搭建,并亲自实现与主流浏览器、Android/iOS客户端安全通信

Tomcat单向Https验证搭建,并亲自实现与主流浏览器、Android/iOS客户端安全通信

发布时间:2016-02-29 16:00:21
众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了。网上有很多搭建Https的教程,但是比较零散,Web浏览器端和移动端具体部署也不是特别 ...

众所周知,iOS9已经开始在联网方面默认强制使用Https替换原来的Http请求了,虽然Http和Https各有各的优势,但是总得来说,到了现在这个安全的信息时代,开发者已经离不开Https了。

网上有很多搭建Https的教程,但是比较零散,Web浏览器端和移动端具体部署也不是特别明确,如果真的用于项目中,还需要折腾一番,本人直接来个项目级别的Demo。

 

在开始之前,我总结一下keytool这个证书工具需要处理的几种常见后缀格式的意义:

jsk/keystore, 表示一个密钥库,里面可以包含多个密钥条目(证书),密钥条目(证书)还可以分私有的和信任的等,私有的一般包括私钥、公钥和密钥条目信息,信任的一般包括公钥和密钥条目信息(公钥证书)。打开密钥库需要一个密码,同时打开每个私有密钥条目也需要一个密码(但一般建议将打开私有密钥条目的密码设置跟打开密钥库密码相同,省的弄乱了,以下我的Demo演示是设置相同的),做过给安卓apk签名打包的一定能体会到这个。

csr/certreq,证书请求文件,你把这个提交给CA,CA会给你颁发cer格式的含有公钥和密钥条目信息的证书(公钥证书)给你。

cer,用于存储某个密钥条目(证书)的公钥文件,一般你提交了csr给CA后,CA会颁发给你,你也可以通过自签名的CA颁发,如果你已经有密钥条目(证书)在密钥库里,也可以从jsk/keystore中的某个密钥条目(证书)导出其公钥和密钥条目内容的证书(公钥证书)。

综上,其实最简单的理解就是密钥库就相当于SQL数据库,各种密钥条目(证书)就相当于SQL数据库表 ,一个SQL数据库表其实跟其它的表又有父子(外键)关系的,这种关系叫做密钥条目(证书)的密钥链。为了描述更加方便,以下将《密钥库》描述词叫做《证书库》,《密钥条目》描述词叫做《证书》,cer格式的公钥和密钥条目内容的证书叫做《公钥证书》。

 

接下来开始演示Demo示例:

1、生成服务器端证书库和证书:(生成服务器端证书库和证书可以有多种方式,推荐通过走第三方CA方式,这样生成的证书以后更具有保障性和安全性(尤其是对web客户端,可以启动“绿色地址栏/安全锁 地址栏显示单位名称 EV国际认证标识”等等))

1-1-1、方式一、使用keytool,生成自签名的CA证书和自签名的server证书(下面生成的CA是自签名的,当然下面生成的server也是自签名的,这些证书在浏览器上使用绝对不会出现绿条):

1.生成自签名CA:keytool -genkey -v -alias ca -keyalg RSA -keystore D:\ca_cert_lib.jks -validity 3650注意证书名叫ca定义为自签名的CA证书,证书名叫server定义为服务器证书,它们分别保存在证书库路径为 D:\ca_cert_lib.jksD:\server_cert_lib.jks 中此时可以先查看以下ca.cer和server.cer公钥证书具体内容(注意ca.cer是自签名CA的公钥文件,其颁发者还是它自己,而server.cer是server服务器的公钥文件,其颁发者是自签名的CA,两者是有本质区别的,下面安装回复后可以看到这个区别),不过其实他们都是个Base64过的字符串:这时发现这个server证书变化挺大的,一是证书连变长了,变成2了,这个server证书附带了上一级证书SELF CA ROOT CERT的信息,其次是server的发布者变成了SELF CA ROOT CERT,这也就是说明成功的使用自签名的CA给server签名成功了

原标题:Tomcat单向Https验证搭建,并亲自实现与主流浏览器、Android/iOS客户端安全通信

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录