SSL 通信原理及Tomcat SSL 双向配置.docx
- 文档编号:26195333
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:24
- 大小:98.28KB
SSL 通信原理及Tomcat SSL 双向配置.docx
《SSL 通信原理及Tomcat SSL 双向配置.docx》由会员分享,可在线阅读,更多相关《SSL 通信原理及Tomcat SSL 双向配置.docx(24页珍藏版)》请在冰豆网上搜索。
SSL通信原理及TomcatSSL双向配置
SSL通信原理及TomcatSSL双向配置
目录
1参考资料..................................................................................................................................1
2SSL(ServerSocketLayer)简介...................................................................................................2
2.1工作原理.......................................................................................................................2
2.2SSL的具体流程图:
....................................................................................................4
2.3SSL通讯示意图............................................................................................................5
2.4SSL通讯说明................................................................................................................5
3keytool安全证书学习.............................................................................................................6
3.1验证是否已创建过同名的证书...................................................................................6
3.2删除已创建的证书.......................................................................................................6
3.3创建证书.......................................................................................................................6
3.4常出现的异常:
...........................................................................................................7
3.4.1Keytool是一个Java数据证书的管理工具。
.................................................7
4为tomcat6批量生成安全证书...............................................................................................8
4.1.1第一步:
为服务器生成证书...........................................................................8
4.1.2第二步:
为客户端生成证书...........................................................................9
4.1.3第三步:
让服务器信任客户端证书...............................................................9
4.1.4第四步:
配置Tomcat服务器.........................................................................9
4.1.5第五步:
导入客户端证书.............................................................................10
4.1.6第六步:
导出服务器证书给客户端..............................................................10
4.1.7第七步:
将导入server.cer,为客户端创建定制密钥库.............................11
4.1.8第八步:
创建Java客户端访问:
......................................................................11
4.1.9测试访问:
........................................................................................................12
4.1.10SSL证书错误信息..........................................................................................12
5说明:
......................................................................................................................................13
6不同格式证书导入keystore方法.........................................................................................13
6.1JavaKeyStore的类型..................................................................................................14
6.2证书导入.....................................................................................................................14
6.2.1Der/Cer证书导入:
.......................................................................................14
6.2.2P12格式证书导入:
......................................................................................15
6.3P7B格式证书导入:
.................................................................................................16
6.4总结:
............................................................................................................................16
1参考资料
本文部分内容来源于网络,目的是介绍某些工具及技术的使用与原理。
其中Tomcat的配置测试及Webservcie客户端的调用。
经过实战测试,
客户端调用Webservice采用Xfire框架。
仅提供了代码片段。
2SSL(ServerSocketLayer)简介
2.1工作原理
1、SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。
可以实现信息传
递的保密性、完整性,并且会话双方能鉴别对方身份。
不同于常用的http协议,我们在与
网站建立SSL安全连接时使用https协议,即采用https:
//ip:
port/的方式来访问。
当我们与一个网站建立https连接时,我们的浏览器与WebServer之间要经过一个握手
的过程来完成身份鉴定与密钥交换,从而建立安全连接。
具体过程如下:
用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要
信息发送到服务器。
服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息
发送给浏览器,同时发给浏览器的还有服务器的证书。
如果配置服务器的SSL需要验证用户
身份,还要发出请求要求浏览器提供用户证书。
客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。
如果成功,那么继续。
客户端浏览器为本次会话生成pre‐mastersecret,并将其用服务器公钥加密后发送给服
务器。
如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证
书一起发送给服务器。
如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。
如果不在信任列
表中,结束本次会话。
如果检查通过,服务器用自己的私钥解密收到的pre‐mastersecret,
并用它通过某些算法生成本次会话的mastersecret。
客户端与服务器均使用此mastersecret生成本次会话的会话密钥(对称密钥)。
在双方SSL
握手结束后传递任何消息均使用此会话密钥。
这样做的主要原因是对称加密比非对称加密的
运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。
并通知服务器客户端
已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。
并通知客户端服务器
已经完成本次SSL握手。
本次握手过程结束,会话已经建立。
双方使用同一个会话密钥分别对发送以及接受的信
息进行加、解密。
2、SSL(SecureSocketLayer)是一种通信交互协议,由Netscape公司在1994年制定,主
要目的就是确保在web服务器和浏览器之间数据传输安全。
SSL协议层是在TCP/IP层和应
用层之间。
当前TLS(TransportLayerSecurity)正在逐渐替代SSL(最新版本v3)。
SSL协议分成以下几部分:
RecordProtocal是SSL的基础层,SSL所有的上层操作都是基于这个层次,这层主要负责消
息内容的分段,压缩,加密和数字摘要等操作。
HandshakeProtocal故名思义就是握手协议,也是在正式应用数据传输前双方交换加密
设置以及认证的流程规范协议。
ChangeCipherSpecProtocol是基于record协议层通知远端服务器修改record协议层中
安全设置的协议。
AlertProtocol是基于record协议发送警告到远端服务器的协议。
2.2SSL的具体流程图:
SSL的流程也体现了对于对称性密钥和非对称性密钥的使用,由于对称性密钥加密比非对称
性密钥加密要快1000倍,那么对称性密钥被用来做对内容的加密,而非对称性密钥用来做
传递对称性密钥的加密手段。
服务端所需要具备的是一个拥有服务端的标示,公钥私钥对的证书。
在握手的流程中,
服务端将带有公钥的证书抽取出来发送给客户端,客户端就首先可以判断证书颁发者是否属
于本机受信的CA,如果不是,就会类似于IE跳出提示,如果通过了这部分CA认证,双方
就可以通过非对称性加密算法来交换客户端生成的临时对称密码,进行安全加密信息交互。
2.3SSL通讯示意图
2.4SSL通讯说明
在该部分,将上图所示的示意图进行说明。
为了说明的方便,在本文中称客户端为B,服务
器端为S。
STEP1:
B——〉S(发起对话,协商传送加密算法)
你好,S!
我想和你进行安全对话,我的对称加密算法有DES,RC5,我的密钥交换算法有
RSA和DH,摘要算法有MD5和SHA。
STEP2:
S——〉B(发送服务器数字证书)
你好,B!
那我们就使用DES-RSA-SHA这对组合进行通讯,为了证明我确实是S,现在
发送我的数字证书给你,你可以验证我的身份。
STEP3:
B——〉S(传送本次对话的密钥)
(检查S的数字证书是否正确,通过CA机构颁发的证书验证了S证书的真实有效性后。
生成了利用S的公钥加密的本次对话的密钥发送给S)
S,我已经确认了你的身份,现在将我们本次通讯中使用的对称加密算法的密钥发送给
你。
STEP4:
S——〉B(获取密钥)
(S用自己的私钥解密获取本次通讯的密钥)。
B,我已经获取了密钥。
我们可以开始通信了。
STEP5:
S<——>B(进行通讯)
说明:
一般情况下,当B是保密信息的传递者时,B不需要数字证书验证自己身份的真
实性,如电子银行的应用,客户需要将自己的账号和密码发送给银行,因此银行的服务器需
要安装数字证书来表明自己身份的有效性。
在某些B2B应用,服务器端也需要对客户端的
身份进行验证,这时客户端也需要安装数字证书以保证通讯时服务器可以辨别出客户端的身
份,验证过程类似于服务器身份的验证过程。
此外需要说明的是,在一些电子商务的应用中,可能还会使用到电子签名,或者为了信
息交换的更加安全,会增加电子签名和消息校验码(MAC)。
为了便于了解SSL,下面在简要介绍一下信息加密相关知识。
使用密钥类型加密信息的加密
算法可以分为以下几类:
HASH编码、对称加密和非对称加密三类。
HASH编码是使用HASH算法从任意长度的消息中计算HASH值的一个过程,HASH值可
以说是消息的指纹,因为对于任何不同的消息,几乎总有不同的HASH值。
因此在SSL通讯
过程中,可以对消息的HASH值进行加密,确保传递的消息在传输过程中没有被修改。
非对称加密或称之为公钥加密使用数学上相关的两个数值来对信息进行编码(加密),
其中一个数字称为公钥,另一个称为私钥。
公钥加密的信息可以用私钥解密,私钥加密的信
息可以用公钥解密。
由于公钥可以大面积发放,因此公钥加密在SSL加密通信中应用于对密
钥的加密或者进行数字签名。
对称加密和非对称加密相比的区别在于对称加密中,加密信息和解密信息使用同样的密
钥,因此该密钥无法公开。
但是其具有加密、解密快速的特点。
在SSL通讯中,首先采用非对称加密交换信息,使得服务器获得浏览器端提供的对称加
密的密钥,然后利用该密钥进行通讯过程中信息的加密和解密。
为了保证消息在传递过程中
没有被篡改,可以加密HASH编码来确保信息的完整性。
3keytool安全证书学习
3.1验证是否已创建过同名的证书
keytool-list-v-aliastomcat-keystore"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS"-storepasschangeit
3.2删除已创建的证书
keytool-delete-aliastomcat-keystore"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS"-storepasschangeit
3.3创建证书
1.服务器中生成证书:
(注:
生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)
keytool-genkey-aliastomcat-keyalgRSA-keystored:
\mykeystore-dname"CN=localhost,OU=localhost,O=localhost,L=SH,ST=SH,C=CN"-keypasschangeit-
storepasschangeit
2.导出证书,由客户端安装:
keytool-export-aliastomcat-keystored:
\mykeystore-filed:
\mycerts.cer-storepasschangeit
3.4常出现的异常:
“未找到可信任的证书”--主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用
keytool-list-aliastomcat-keystore"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS"-storepasschangeit
来查看证书是否真的导入到JVM中。
3.4.1Keytool是一个Java数据证书的管理工具。
keystore
Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中
在keystore里,包含两种数据:
密钥实体(Keyentity)——密钥(secretkey)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trustedcertificateentries)——只包含公钥
Alias(别名)
每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
3.4.1.1keystore的存储位置
在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,
如:
对于windowxp系统,会生成在系统的C:
\DocumentsandSettings\UserName\
文件名为“.keystore”
3.4.1.2keystore的生成
引用
keytool-genkey-aliastomcat-keyalgRSA -keystored:
\mykeystore-dname"CN=localhost,OU=localhost,O=localhost,L=SH,ST=SH,C=CN"-keypasschangeit-storepass-validity180
3.4.1.3参数说明:
-genkey表示要创建一个新的密钥
-dname表示密钥的DistinguishedNames,
CN=commonName
OU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
DistinguishedNames表明了密钥的发行者身份
-keyalg使用加密的算法,这里是RSA
-alias密钥的别名
-keypass私有密钥的密码,这里设置为changeit
-keystore 密钥保存在D:
盘目录下的mykeystore文件中
-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
-validity该密钥的有效期为 180天 (默认为90天)
cacerts证书文件(ThecacertsCertificatesFile)
改证书文件存在于java.home\lib\security目录下,是Java系统的CA证书仓库
3.4.1.4keytool生成根证书时出现如下错误:
keytool错误:
java.io.IOException:
keystorewastamperedwith,orpasswordwasincorrect
原因是在你的home目录下是否还有.keystore存在。
如果存在那么把他删除掉,后再执行
或者删除"%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS 再执行
4为tomcat6批量生成安全证书
4.1.1第一步:
为服务器生成证书
keytool-genkey-v-aliastomcat-keyalgRSA-keystoreD:
/SSL/keystore/tomcat.keystore-dname"CN=127.0.0.1,OU=风絮,O=风絮,L=昆明,ST=云南,C=CN"-validity3650-storepassxiejin-keypassxiejin
如果Tomcat所在服务器的域名不是“localhost”,应改为对应的域名,如“”,否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。
在本地做开发测试时,应填入“localhost”
4.1.2第二步:
为客户端生成证书
(为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12)
keytool-genkey-v-aliasclient-keyalgRSA-storetypePKCS12-keystoreD:
/SSL/keystore/client.p12-dname"CN=client,OU=枫叶,O=枫叶,L=北京,ST=北京,C=CN"-validity3650-storepassclient-keypassclient
对应的证书库存放在“D:
/SSL/keystore/client.p12“,客户端的CN可以是任意值。
稍候,我们将把这个“client.p12”证书库导入到IE和Firefox中。
4.1.3第三步:
让服务器信任客户端证书
由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。
由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令:
keytool-export-aliasclient-keystore D:
/SSL/keystore/xa-storetypePKCS12-storepassclient-rfc-file D:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSL 通信原理及Tomcat 双向配置 通信 原理 Tomcat 双向 配置