tomcat下配置https (超文本传输协议)-单向/双向验证

tomcat下配置https (超文本传输协议)-单向/双向验证

转自:(单向)http://hongxuwei.blog.51cto.com/2928285/676746

(双向)http://ss3ex.iteye.com/blog/607674

 

(作者声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。)

Tomcat 简介

Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。

https(Secure Hypertext Transfer Protocol)安全超文本传输协议 简介

https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层。

它是由Netscape开发并内置于其浏览器中,旨在达到在开放网络(Internet)上安全保密地传输信息的目的。

用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。

SSL (Secure Socket Layer)简介

为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。

(附)SSL工作原理
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用的方式来访问。
当我们与一个网站建立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、生成服务器端证书 
 

  
  
  1. keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650 

 

2、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件
 

  
  
  1. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" 
  2.                maxThreads="150" scheme="https" secure="true" 
  3.                clientAuth="false" sslProtocol="TLS" keystoreFile="c:\server.jks" keystorePass="password"/> 

注意protocal属性值的设置。clientAuth="false"表示单向认证

重启tomcat  输入:https://localhost:8443/

 

双向认证参考:http://ss3ex.iteye.com/blog/607674

tomcat6配置双向认证

1、生成服务器端证书
Java代码
  1. keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650  
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650

2、生成客户端证书
Java代码
keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650  
keytool -genkey -keyalg RSA -dname "cn=sango,ou=sango,o=none,l=china,st=beijing,c=cn" -alias custom -storetype PKCS12 -keypass password -keystore custom.p12 -storepass password -validity 3650

客户端的CN可以是任意值。
3、由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令,先把客户端证书导出为一个单独的cer文件:
Java代码
keytool -export -alias custom -file custom.cer -keystore  custom.p12 -storepass password -storetype PKCS12 -rfc  
keytool -export -alias custom -file custom.cer -keystore  custom.p12 -storepass password -storetype PKCS12 -rfc

然后,添加客户端证书到服务器中(将已签名数字证书导入密钥库)
Java代码
keytool -import -v -alias custom -file custom.cer -keystore  server.jks -storepass password  
keytool -import -v -alias custom -file custom.cer -keystore  server.jks -storepass password

4、查看证书内容
Java代码
keytool -list -v -keystore server.jks -storepass password  
keytool -list -v -keystore server.jks -storepass password

5、配置tomcat service.xml文件
Xml代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  1.     maxThreads="150" scheme="https" secure="true"  
  2.     clientAuth="true" sslProtocol="TLS"  
  3.     keystoreFile="D:/server.jks" keystorePass="password"  
  4.     truststoreFile="D:/server.jks" truststorePass="password"  
  5. />  

clientAuth="true"表示双向认证
6、导入客户端证书到浏览器
双向认证需要强制验证客户端证书。双击“custom.p12”即可将证书导入至IE


tomcat6配置单向认证

1、生成服务器端证书
Java代码
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650  
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650

2、由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service.xml文件
Xml代码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
  1.     maxThreads="150" scheme="https" secure="true"  
  2.     clientAuth="false" sslProtocol="TLS"  
  3.     keystoreFile="D:/server.jks" keystorePass="password"       
  4. />  

clientAuth="false"表示单向认证,同时去掉truststoreFile="D:/server.jks" truststorePass="password"这2个属性
附件为:添加双向认证的批处理文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值