本教程将指导您安装PFX格式的SSL证书到Tomcat服务器。
当CA签发SSL证书后,您可以从火山引擎证书中心控制台下载SSL证书。获得SSL证书后,您需要将SSL证书安装到您的Web服务器。这样做可以使您的Web服务支持HTTPS。
Tomcat是一种流行的基于Java的Web服务器,支持多种证书格式用于配置SSL/TLS加密。Tomcat支持的证书格式包括:
PEM(Privacy-Enhanced Mail):这是一种广泛使用的格式,将证书和私钥存储在单独的文本文件中。证书文件通常具有.crt
或.pem
扩展名,而私钥文件具有.key
或.pem
扩展名。
PKCS12:这是一种二进制格式,可以将证书和私钥存储在单个文件中。该文件具有.p12
或.pfx
扩展名。PKCS12文件受密码保护。
JKS(Java KeyStore):这是Java应用程序(包括Tomcat)使用的专有格式。它是一个二进制文件,可以存储多个证书和私钥。该文件具有.jks
扩展名,并受密码保护。
在为Tomcat配置SSL/TLS时,您可以选择一种满足服务器要求的证书格式。本教程以PFX格式为例,介绍为Tomcat配置SSL/TLS的步骤。
本教程以以下环境为例介绍相关的操作步骤:
服务器:
/opt/tomcat
说明
Web服务器环境不同,可能导致实际配置与本文描述有差异。这种情况下,您需以实际环境为准,本文仅作为参考。
示例域名:ssl.example.com
下图展示了网站没有安装SSL证书时,用户通过HTTP协议访问域名的结果。可以看到浏览器提示连接不安全。
本教程将指导您修改Tomcat的配置文件,以开启监听8443或443端口并为主机关联证书。本教程包含以下步骤:
PFX格式的证书文件包含证书和私钥。只有当您将证书和私钥都托管在证书中心时,您才可以从证书中心下载PFX格式的证书文件。具体包含以下情形:
满足上述任一情形时,当您的证书签发后,您可以直接下载PFX格式证书。如果上述情形都不满足,则当您的证书签发后,您可以下载PEM格式证书,然后将证书转换为PFX格式。
SSL证书签发后,您可以从证书中心控制台下载证书。您需要选择对应于 Tomcat(PFX格式) 的下载选项(如下图所示)。具体操作,请参见下载SSL证书。
下载成功后,您会得到一个压缩包。压缩包的名称为<CommonName>_tomcat
。其中,<CommonName>
表示证书颁发给的域名。解压缩后,您会获得以下文件:
<CommonName>.pfx
:证书文件,包含证书和私钥。
keystorePass.txt
:证书密码文件,包含证书密码。
说明
keystorePass.txt
。证书密码文件与证书文件一一对应。SSL证书签发后,您可以从证书中心控制台下载证书。您需要选择对应于 其他 的下载选项。关于下载证书的具体操作,请参见下载证书。
下载成功后,您会得到一个压缩包。压缩包的名称为<CommonName>_other
。其中,<CommonName>
表示证书颁发给的域名。解压缩后,您会获得以下文件:
<CommonName>.crt
:证书文件。<CommonName>.pem
:证书文件(PEM 编码)。接下来,您可以使用一个证书格式转换工具将证书文件和(由您保管的)私钥文件,转换成 PFX 格式的证书文件。
上传本地文件到远程服务器的方式有很多,本教程以使用scp
命令为例,介绍如何将证书从本地Windows计算机上传到Tomcat服务器。
远程登录Tomcat服务器。
在Tomcat安装目录,创建一个用于存放证书的文件夹,命名为cert
。
Tomcat版本不同,安装目录可能不同。本教程中,Tomcat的安装目录为/opt/tomcat
。
cd /opt/tomcat mkdir cert
说明
您可以使用find / -name server.xml
命令,查询server.xml
配置文件所在路径,也就是Tomcat安装目录。
打开本地计算机的命令行工具。
以Windows 10操作系统为例,在桌面左下角的开始图标上单击鼠标右键,然后单击 Windows PowerShell。
使用scp
命令上传证书文件到服务器。
scp <本地计算机上的文件路径> root@<远程服务器IP>:/opt/tomcat/cert
运行scp
命令后,根据命令提示,输入root账号的登录密码。
示例:
scp C:\ssl.example.com.pfx root@<远程服务器IP>:/opt/tomcat/cert
验证文件是否上传成功。
在Tomcat服务器,运行ll /opt/tomcat/cert
命令,列举cert
目录下的文件。
如果文件列表中包含证书文件,表示证书已上传成功。
Tomcat服务器的主配置文件是server.xml
。该文件位于Tomcat安装目录的conf
目录。本教程中,server.xml
的路径为/opt/tomcat/conf/server.xml
。
编辑server.xml
。
vim /opt/tomcat/conf/server.xml
找到如下区域:
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2 …… -->
在该区域下方,将<Connector></Connector>
的注释移除,然后修改<Connector></Connector>
代码为如下内容:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/opt/tomcat/cert/ssl.example.com.pfx" certificateKeystorePassword="3******n" type="RSA"/> </SSLHostConfig> </Connector>
在上述代码,您需要修改如下内容:
port
:表示监听HTTPS请求的端口。Tomcat默认使用8443端口,您可以将其更改为443。
说明
如果使用443端口,您还需将80端口<Connector></Connector>
配置中的redirectPort
修改为443。
certificateKeystoreFile
:表示证书文件的路径。
certificateKeystorePassword
:表示证书密码。
说明
您可以从下载的keystorePass.txt
文件中获取证书密码。如果您自己生成了PFX证书,请使用您在生成证书时设置的密码。
修改后的内容如下图所示。
重启Tomcat,使修改生效。
进入bin
目录。bin
目录位于Tomcat安装目录。
cd /opt/tomcat/bin
关闭Tomcat。
./shutdown.sh
重新打开Tomcat。
./startup.sh
注意
进行验证操作前,请确保服务器已开放8443或443端口。如果您的服务器因安全组、防火墙等策略,未允许8443和443端口访问,请先修改对应策略。
打开本地计算机上的浏览器,使用HTTPS协议访问域名:https://ssl.example.com:<8443/443>
。
成功建立连接后,浏览器的地址栏左侧会出现一个图标,表示连接是安全的。(浏览器及浏览器的版本不同,图标有可能存在差异。以您实际看到的图标为准。)您可以单击对应图标,查看连接详情。连接详情中包含服务器证书信息。
网站开启HTTPS通信后,您还可以修改Tomcat的web.xml
配置,使终端用户的HTTP请求强制跳转为HTTPS请求。这样做能够确保终端用户总是通过HTTPS协议访问您的Web服务。
web.xml
文件文件位于Tomcat安装目录的conf
目录。本教程中,web.xml
的路径为/opt/tomcat/conf/web.xml
。
编辑配置文件。
vim /opt/tomcat/conf/web.xml
定位到配置文件末尾,在</web-app>
的上一行添加以下内容:
<security-constraint> <web-resource-collection> <web-resource-name>Entire Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
修改后的内容如下图所示。
打开本地计算机上的浏览器,使用HTTP协议访问域名:http://ssl.example.com
。
如果协议被自动转换为HTTPS,表示HTTP请求已强制跳转为HTTPS请求。
关于Tomcat 10 SSL/TLS配置的更多信息,请参见Apache Tomcat 10官方文档。
如果您使用其他版本Tomcat,建议您从Apache Tomcat相应版本文档的SSL/TLS章节中获取配置说明。