【Tomcat系列】Tomcat SSL配置及Tomcat CA证书安装

Tomcat既能够做为独立的Servlet容器,也能够做为其余HTTP服务器附加的Servlet容器。若是Tomcat在非独立模式下工做,一般没必要配置SSL,由它从属的HTTP服务器来实现和客户的SSL通讯。Tomcat和HTTP服务器之间的通讯无须采用加密机制,HTTP服务器将解密后的数据传给Tomcat,并把Tomcat发来的数据加密后传给客户。html

若是Tomcat做为独立的Java Web服务器,则能够根据安全须要,为Tomcat配置SSL,它包含如下两个步骤:java

(1) 准备安全证书。web

(2) 配置Tomcat的SSL链接器(Connector)。算法

1、准备安全证书

我在前面的《SSL简介》一文中讲过,得到安全证书有两种方式:一种方式是到权威机构购买,还有一种方式是建立自我签名的证书。这里就介绍第二种获取证书的方式,毕竟免费的嘛!浏览器

SUN公司提供了制做证书的工具keytool。在JDK 1.4之后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe。此外,也能够到SUN的网站上下载,下载地址以下:tomcat

http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security安全

经过keytool工具建立证书的命令为:服务器

 
  1. keytool -genkeypair -alias "tomcat" -keyalg "RSA" 

以上命令将生产一对非对称密钥和自我签名的证书,这个命令中几个参数的意思以下:网络

  • -genkeypair:生成一对非对称密钥。
  • -alias:指定密钥对的别名,该别名是公开的。
  • -keyalg:指定加密算法,本例中的采用通用的RAS加密算法

首先会提示输入keystore的密码,这里我输入的密码是sunchis。工具

而后提示输入我的信息,如姓名、组织单位和所在城市等,只要输入真实信息便可。

接着会提示输入信息是否正确,输入“y”表示信息正确。

最后要求输入<Tomcat>的主密码,这里设置与keystore相同的密码,所以只需根据提示按回车键便可。

点击放大图片
keytool生成证书的过程

以上命令将在操做系统的用户目录下生成名为“.keystore”的文件。我当前登陆到操做系统的用户名是XuLiang,那么在Wnidows下,文件的位置为:

C:\Documents and Settings\XuLiang\.keystore

点击放大图片
证书存放的路径

在Linux下,该文件的位置为:home\XuLiang\.keystore

另外,若是但愿生成的keystore文件存放在其余目录中,能够再keytool命令中加入-keystore参数,这个参数用来指定keystore文件的存放位置,例如如下命令将在D:\下生成名为“sunchis.keystore”的文件:

 
  1. keytool -genkeypair -alias "tomcat" -keyalg "RSA" –keystore "D:\sunchis.keystore" 

查看已生成的证书的命令为:

 
  1. keytool -list -keystore "C:\Documents and Settings\XuLiang\.keystore" 
点击放大图片
查看证书信息

2、配置SSL链接器

在Tomcat的server.xml文件中,已经提供了现成的配置SSL链接器的代码,只要把<Connector>元素的注释去掉便可:

 
  1. <!—  
  2. Define a SSL HTTP/1.1 Connector on port 8443  
  3. This connector uses the JSSE configuration, when using APR, the   
  4. connector should be using the OpenSSL style configuration  
  5. described in the APR documentation   
  6. --> 
  7.  
  8. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
  9.           maxThreads="150" scheme="https" secure="true" 
  10.           clientAuth="false" sslProtocol="TLS"   
  11.           keystoreFile="C:\Documents and Settings\XuLiang\.keystore" 
  12.           keystorePass="SUNCHIS" 
  13.           ciphers="sunchis" 
  14. /> 

实际上,基于SSL的HTTPS使用的默认端口是443。但Tomcat在这里将HTTPS端口设置为8443。<Connector>配置里的一些属性参数以下表:

属 性 描 述
clientAuth 若是设为true,表示Tomcat要求全部的SSL客户出示安全证书,对SSL客户进行身份验证
keystoreFile 指定keystore文件的存放位置,能够指定绝对路径,也能够指定相对于<CATALINA_HOME>(Tomcat安装目录)环境变量的相对路径。若是此项没有设定,默认状况下,Tomcat将从当前操做系统用户的用户目录下读取名为“.keystore”的文件。
keystorePass 指定keystore的密码,若是此项没有设定,在默认状况下,Tomcat将使用“changeit”做为默认密码。
sslProtocol 指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不该该修改这个默认值。
ciphers 指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。若是此项没有设定,在默认状况下,套接字可使用任意一个可用的密码。

3、访问支持SSL的Web站点

因为SSL技术已创建到绝大多数浏览器和Web服务器程序中,所以,仅需在Web服务器端安装服务器证书就能够激活SSL功能了。

若是上述的第一步和第二步已经配置完毕,那么就能够重启Tomcat服务器了,而后从IE浏览器中以HTTPS方式来访问在Tomcat服务器上的任何一个Web应用。如今咱们就来访问一下这个地址:

https://localhost:8443

当Tomcat收到这一HTTPS请求后,会向客户的浏览器发送服务器的安全证书,IE浏览器接受到证书后,将向客户显示安全警报窗口,以下图:

点击放大图片

在安全警报窗口中的第一行提示信息为:“您与该站点交换的信息不会被其余人查看或更改。但该站点的安全证书有问题。”这句话的意思是,一方面,该安全证书非权威机构颁发,不能做为有效的验证对方身份的凭据。另外一方面,假如与对方通讯,通讯数据会通过加密后在网络上传输,所以不会被他人监视或修改。

若是单击“【否】”按钮,就表示不信任该服务器出示的安全证书,所以浏览器会结束与Tomcat服务器的通讯。

若是单击“【是】”按钮,表示信任Tomcat服务器出示的安全证书,浏览器将创建与Tomcat服务器的SSL会话,Tomcat服务器就会把客户请求的数据发送过来。

若是单击“【查看证书】”按钮,将出现证书窗口,以下图:

点击放大图片
证书窗口

从图中能够看到证书的“颁发者”和“颁发给”都是同一我的,这说明是自我签名的证书,非权威机构颁发。

点击放大图片
证书的详细信息

从证书的详细信息中能够看出,在证书中公布了证书发送者的身份和公钥。而私钥只有证书发送者拥有,不会向证书接受者公开。

相关文章
相关标签/搜索