SSL+Tomcat配置及其原理

SSL协议使用不对称加密技术实现双方之间信息的安全传递。可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。
与网站建立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、生成服务器端证书文件

 keytool -genkey -v -alias mykey -keyalg RSA -validity 3650 -keystore c:\sdust.keystore 
       -dname "CN=你的ip,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 123456 -keypass 123456
参数注意:
A、输入keystore密码:此处需要输入大于6个字符的字符串
B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
C、“你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单 位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”, 否则输入“n”重新填写上面的信息
D、输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以


l        完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

2、配置TOMCAT服务器

(1)    如果你是在Windows环境中生成证书文件,则需要将生成的证书tomcat.keystore拷贝到Tomcat将要引用的位置,假设tomcat的 应用证书的路径是“/etc/tomcat.keystore”,则需要将证书文件拷贝到“etc/”下;如果是在Linux环境按照上述介绍的步骤生成 证书文件的话,此时证书文件已经在“etc/”下。

(2)    配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下,

<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000"
   redirectPort="8443" />

修改参数=>

<Connector port="80" protocol="HTTP/1.1"
   connectionTimeout="20000"
    redirectPort="443" />
我项目里面的设置是:

<Connector  executor="tomcatThreadPool"
               port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
        acceptCount="100"
        useBodyEncodingForURI="true"
             enableLookups="false"
               redirectPort="443" />
不仅设置了ssl,还设置了线程池。


<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

              maxThreads="150" scheme="https" secure="true"

              clientAuth="false" sslProtocol="TLS"/>

-->

去掉注释且修改参数=>

<Connector port="443" protocol=" org.apache.coyote.http11.Http11Protocol " SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true" useBodyEncodingForURI="true"
       clientAuth="false" sslProtocol="TLS" keystoreFile="tomcat.keystore" keystorePass="412385524"/>

注释:标识为淡蓝色的两个参数,分别是证书文件的位置和<tomcat>的主密码,在证书文件生成过程中做了设置
且这里记得要加上useBodyEncodingForURI="true"项,否则tomcat传递的时候汉字传递为乱码。

<!--
   <Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
-->

修改参数=>

<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />

(3) 打开$CATALINA_HOME/conf/web.xml,在该文件末尾增加:
<security-constraint> 
    <web-resource-collection > 
  <web-resource-name >SSL</web-resource-name> 
 <url-pattern>/*</url-pattern> 
  </web-resource-collection>
    <user-data-constraint> 
<transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 
</security-constraint>

3、上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录

4、注意事项:
(1)生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”
(2)如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的

5、遗留问题:
(1)如果AC主机不能通过域名查找,必须使用IP,但是这个IP只有在配置后才能确定,这样证书就必须在AC确定IP地址后才能生成
(2)证书文件只能绑定一个IP地址,假设有10.1.25.250 和 192.168.1.250 两个IP地址,在证书生成文件时,如使用了10.1.25.250,通过IE就只能使用10.1.25.250 来访问AC-WEB,192.168.1.250是无法访问AC-WEB的。
tomcat默认的ssl端口是8443,而标准的ssl端口是443,设置443之后,就不用在后面输入端口号就可以直接使用ssl端口访问了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值