Tomcat SSL配置及Tomcat CA证书安装

Tomcat既可以作为独立的Servlet容器,也可以作为其他HTTP服务器附加的Servlet容器。如果Tomcat在非独立模式下工作, 通常不必配置SSL,由它从属的HTTP服务器来实现和客户的SSL通信。Tomcat和HTTP服务器之间的通信无须采用加密机制,HTTP服务器将解 密后的数据传给Tomcat,并把Tomcat发来的数据加密后传给客户。

如果Tomcat作为独立的Java Web服务器,则可以根据安全需要,为Tomcat配置SSL,它包含以下两个步骤:

(1) 准备安全证书。

(2) 配置Tomcat的SSL连接器(Connector)。

一、准备安全证书

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

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

通过keytool工具创建证书的命令为:

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

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

-genkeypair:生成一对非对称密钥。

-alias:指定密钥对的别名,该别名是公开的。

-keyalg:指定加密算法,本例中的采用通用的RAS加密算法

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

然后提示输入个人信息,如姓名、组织单位和所在城市等,只要输入真实信息即可。

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

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

Tomcat SSL配置及Tomcat CA证书安装

keytool生成证书的过程

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

C:\Documents and Settings\XuLiang\.keystore

证书存放的路径

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

另外,如果希望生成的keystore文件存放在其他目录中,可以再keytool命令中加入-keystore参数,这个参数用来指定keystore文件的存放位置,例如以下命令将在D:\下生成名为“sunchis.keystore”的文件:

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

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

keytool -v -list -keystore "C:\Documents and Settings\XuLiang\.keystore" 

查看证书信息

二、配置SSL连接器

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

<!—  

Define a SSL HTTP/1.1 Connector on port 8443  

This connector uses the JSSE configuration, when using APR, the   

connector should be using the OpenSSL style configuration  

described in the APR documentation   

--> 

 

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

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

          clientAuth="false" sslProtocol="TLS"   

          keystoreFile="C:\Documents and Settings\XuLiang\.keystore" 

          keystorePass="SUNCHIS" 

          ciphers="sunchis" 

/> 

实际上,基于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

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdzjs.html