文档章节

tomcat实现SSL配置(详细版)

被风遗忘
 被风遗忘
发布于 2012/03/16 16:27
字数 1281
阅读 674
收藏 8
Tomcat双向认证的问题这么多,贴一篇我总结的Tomcat双向认证方法 

tomcat实现SSL配置  

tomcat实现SSL配置 
编辑tomcat的配置文件server.xml,去掉下面SSL Connector的注释,修改为如下: 
  <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->; 

  <Connector className="org.apache.catalina.connector.http.HttpConnector" 
          port="8443" minProcessors="5" maxProcessors="75" 
          enableLookups="true" 
    acceptCount="10" debug="0" scheme="https" secure="true">; 
    <Factory className="org.apache.catalina.net.SSLServerSocketFactory" 
          clientAuth="false" keystoreFile="tomcat.keystore" 
          keystorePass="tomcat" protocol="TLS"/>; 
  </Connector>; 
keystoreFile的路径是TOMCAT的安装路径下的tomcat.keystore(使用keytool生成的证书库文件) 
>;keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
keystoreFile保存了服务器端的证书库,用于客户端认证。 

常用的配置属性: 
clientAuth 
如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。  
keystoreFile 
如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。 
keystorePass 
如果使用了一个与Tomcat预期不同的keystore(和证书)密码,则加入该属性。  
keystoreType 
如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。  
sslProtocol 
socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改变这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。  
ciphers 
此socket允许使用的被逗号分隔的密码列表。缺省情况下,可以使用任何可用的密码。  
algorithm 
使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其它JVM,参考JVM文档取正确的值。  
truststoreFile 
用来验证客户证书的TrustStore文件。  
truststorePass 
访问TrustStore使用的密码。缺省值是keystorePass。  
truststoreType 
如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。  


使用https://localhost:8443 就可以进行ssl连接的检测 

---------------------------------------------------------------------------------------- 
上诉的SSL连接是客户端单向认证服务器,如果双向认证,将server.xml文件的Connector配置 
clientAuth="false"  
Java服务器端的证书库,服务器认证客户端时使用的根证书库。 
证书库位置:JAVA_HOME/jre/lib/security/cacerts keystore密码为:changeit 

将客户端个人证书的根证书导入服务器的证书库,就可以认证客户端。 

服务器端证书的生成: 
>;keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -validity 365 -keystore tomcat.keystore
>;keytool -certreq -alias tomcat -file Server.csr -keystore tomcat.keystore 生成证书请求文件 
使用openssl命令用根证书签名,再导入签名证书 
>;keytool -import -trustcacerts -alias tomcat -file Server.pem -keystore tomcat.keystore 
注意-trustcacerts选项,使用服务器的证书库认证该证书,首先要将根证书导入cacerts中。 

---------------------------------------------------------------------------------------- 
Tomcat配置SSL,我出现的问题 
我用openssl创建了CA证书,Server证书,Client证书。 
使用keytool将Server证书导入tomcat.keystore文件中,将Tomcat的配置文件server.xml关于SSL的配置设为keystoreFile=tomcat.keystore.SSL连接时,客户端认证tomcat.keystore中的服务器证书。 
将CA证书导入$JAVA_HOME\jre\lib\security\cacerts这个keystore中,用于验证客户端证书。 
在IE中安装CA证书和Client证书(pkcs12,包含私钥的个人证书形式)。 
建立SSL连接https://localhost:8443,连接失败。 

经过反复思量,知道问题所在,SSL连接时,客户端认证服务器时,需要验证服务器的签名,那么tomcat.keystore中就应该有Server的私钥。所以导入Server证书时,应该导入包含私钥的Server证书。 
keytool命令不能导入私钥文件,可以通过在keystore中生成自签名证书,导出证书请求,用CA证书签名后,在导回的方法。 
导回签名证书的过程 
>;keytool -import -trustcacerts -alias tomcat -file Server.pem -keystore tomcat.keystore 
注意-trustcacerts选项,使用服务器的证书库认证该证书,首先要将根证书导入Java的根证书库中:JAVA_HOME\jre\lib\security\cacerts中。 

---------------------------------------------------------------------------------------- 
分析IE实现实现SSL连接的中的证书双向认证过程 
在地址栏中输入https://localhost:8443 

客户端向服务器发送hello消息,tomcat服务器侦听8443端口,收到SSL连接的hello消息,服务器发送server certificate,并且发送client certificate request.客户端IE收到server certificate后取出issuer项,和IE受信任的根证书库中证书的subject比对,找到合适的根证书认证server certificate。并且同时向服务器发送client certificate,服务器收到client certificate后,tomcat服务器查找根证书库cacerts中的根证书的suject,找到合适的根证书认证client certificate.在认证的同时完成密钥协商。客户端认证结束后,IE会弹出"安全警报"对话框,用户可以查看服务器证书,以及服务器证书是否受信任,可以选择是否继续SSL连接。

原文出自:http://www.chinaunix.net/jh/13/580856.html

转载请注明原文出处,谢谢!

© 著作权归作者所有

下一篇: 人生
被风遗忘

被风遗忘

粉丝 84
博文 61
码字总数 159368
作品 0
浦东
高级程序员
私信 提问
Tomcat服务器搭建Https协议

什么是Http协议? HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议之上的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 ...

宇你同在
2018/05/21
23
0
https开发——tomcat配置

最近公司有微信小程序的项目,微信小程序调用接口需要HTTPS协议。HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版...

邵鸿鑫
2017/02/21
0
0
Nginx+Tomcat SSL配置指南|Nginx+Tomcat实现https安全链接

什么是HTTPS? HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加...

红薯
2012/02/28
6.4K
3
简单配置搞定 Nginx + Tomcat + HTTPS

简单配置搞定 Nginx + Tomcat + HTTPS 之前在网上搜索到的很多文章在描述 Nginx + Tomcat 启用 HTTPS 支持的时候,都必须在 Nginx 和 Tomcat 两边同时配置 SSL 支持。但我一直在想为什么就不...

vshcxl
2016/07/15
80
0
[SSL] Tomcat下使用ssl实现双向认证zt

配置Tomcat 4使用SSL ----------------------- 内容: 1.Tomcat简介 2.SSL(Server Socket Layer)简介 3.SSL工作原理 4.配置Tomcat 4.x 使用SSL 5.结论 赵 梁 ([email]b-i-d@163.com[/e......

JavaGG
2009/05/06
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

【0918】正则介绍_grep

【0918】正则介绍_grep 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 一、正则介绍 正则是一串有规律的字符串,它使用单个字符串来描述或匹配一系列符合某个语法规则的字符串。 二、grep工具 ...

飞翔的竹蜻蜓
34分钟前
4
0
为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
今天
8
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
今天
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
今天
5
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部