SSL证书签发后,您可以在火山引擎证书中心控制台下载SSL证书。获得SSL证书后,您必须将SSL证书安装到服务器,才能使服务器支持HTTPS连接。本教程将指导您安装JKS格式的SSL证书到Tomcat服务器。
Tomcat是一种流行的基于Java的Web服务器,支持多种证书格式用于配置SSL/TLS加密。Tomcat支持的证书格式包括:
PEM(Privacy-Enhanced Mail):这是一种广泛使用的格式,将证书和私钥存储在单独的文本文件中。证书文件通常具有.crt
或.pem
扩展名,而私钥文件具有.key
或.pem
扩展名。
PKCS12:这是一种二进制格式,可以将证书和私钥存储在单个文件中。该文件具有.p12
或.jks
扩展名。PKCS12文件受密码保护,可用于导入/导出证书和私钥。
JKS(Java KeyStore):这是Java应用程序(包括Tomcat)使用的专有格式。它是一个二进制文件,可以存储多个证书和私钥。该文件具有.jks
扩展名,并受密码保护。
在配置Tomcat的SSL/TLS时,您可以根据需求和使用的工具选择适当的证书格式来生成或管理证书。
本教程以以下环境为例介绍相关的操作步骤:
服务器:
/opt/tomcat
说明
服务器环境不同,可能导致实际配置步骤与本文描述有差异。这种情况下,您需以实际环境为准,本文只作为参考。
示例域名:ssl.example.com
下图展示了网站没有安装SSL证书时,用户通过HTTP协议访问域名的结果。浏览器提示连接是不安全的。
本教程将指导您修改Tomcat服务器的主配置文件server.xml
,以开启8443/443端口监听并关联JKS格式的证书。
具体步骤如下:
JKS格式的证书文件中包含证书和私钥。只有当您将证书和私钥都托管在证书中心时,您才可以从证书中心下载JKS格式的证书文件。具体分为以下情形:
满足上述情形时,当您的证书签发后,您可以下载JKS格式的证书。如果不满足上述情形,则当您的证书签发后,您可以下载PEM格式的证书,然后自行使用工具将证书转换为JKS格式。
关于下载证书的具体操作,请参见下载证书。
从证书中心控制台下载 Tomcat(JKS格式) 证书压缩包到本地计算机。
下载证书压缩包后,解压缩证书压缩包到本地计算机。证书压缩包名称为<CommonName>_jks
。其中,<CommonName>
表示证书颁发给的域名。解压缩后,您将获得以下文件:
<CommonName>.jks
:证书文件,包含证书和私钥。
keystorePass.txt
:证书密码文件,包含证书密码。
说明
keystorePass.txt
。从证书中心控制台下载 其他 类型服务器的证书压缩包。下载证书压缩包后,解压缩证书压缩包到本地计算机。
证书压缩包名称为<CommonName>_other
。其中,<CommonName>
表示证书颁发给的域名。解压缩后,您将获得以下文件:
<CommonName>.crt
:证书文件。<CommonName>.pem
:证书文件(PEM 编码)。接下来,您需要使用相应工具(如OpenSSL、Keytool等)将证书文件和您保管的私钥文件,转换成JKS格式的证书文件。关于证书格式转换的操作,请参见证书格式转换。
上传本地文件到远程服务器的方式有很多,本教程以使用scp
命令为例,介绍如何将证书从本地Windows计算机上传到Tomcat服务器。
远程登录Tomcat服务器。
在Tomcat安装目录,创建一个用于存放证书的文件夹,命名为cert
。
Tomcat版本不同,安装目录可能不同,具体以您使用的Tomcat版本为准。
本示例中,Tomcat安装目录为/opt/tomcat
。
cd /opt/tomcat mkdir cert
说明
您可以使用find / -name server.xml
命令,查询server.xml
配置文件所在路径。该路径即为Tomcat安装目录。
打开本地计算机的Shell工具。
以Windows 10操作系统为例,在桌面左下角的开始图标上单击鼠标右键,然后单击Windows PowerShell。
使用scp
命令上传证书文件到服务器。
scp <文件在本地计算机的路径> root@<远程服务器IP>:/opt/tomcat/cert
执行scp
命令后,需根据命令提示,输入远程服务器的root账号的密码。
示例:
scp C:\ssl.example.com.jks root@<远程服务器IP>:/opt/tomcat/cert
验证文件上传成功。
在Tomcat服务器,执行ll /opt/tomcat/cert
命令,列举cert
目录的文件。
如果文件列表中包含证书文件,表示证书已上传成功。
Tomcat服务器的主配置文件是server.xml
。该文件位于 Tomcat安装目录的conf
目录。根据您服务器上Tomcat的安装目录不同,您需要执行的命令有差异。
本教程中,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.jks" certificateKeystorePassword="U******1" type="RSA"/> </SSLHostConfig> </Connector>
在上述代码,您需要修改如下内容:
port
:表示监听HTTPS的端口。Tomcat默认使用8443端口,您可以使用443。
说明
如果使用443端口,您还需将80或8080端口<Connector></Connector>
配置中的redirectPort
修改为443。
certificateKeystoreFile
:表示证书文件在服务器上的完整存储路径。
certificateKeystorePassword
:表示证书密码。
您可以从下载的keystorePass.txt
文件中获取证书密码。如果您自己生成了JKS证书,请使用您在生成证书时设置的密码。
修改后的内容如下图所示。
重启Tomcat,使配置调整生效。
进入bin
目录。bin
目录位于Tomcat安装目录。
cd /opt/tomcat/bin
关闭Tomcat。
./shutdown.sh
打开Tomcat。
./startup.sh
注意
进行验证操作前,请确保服务器已开放8443或443端口。如果您的服务器因安全组、防火墙等策略,未允许8443和443端口访问,请先修改对应策略。
打开本地计算机上的浏览器,使用HTTPS格式地址访问域名:https://ssl.example.com
。
成功建立连接后,在浏览器地址栏出现锁状图标,表示连接是安全的。
您可以单击锁状图标,查看连接详情,例如获取证书信息等。
网站启用HTTPS通信后,您还可以修改Tomcat的web.xml
配置,使终端用户的HTTP请求强制跳转为HTTPS请求,确保终端用户总是通过HTTPS协议访问您的Web服务。
web.xml
文件位于Tomcat安装目录的conf
目录。根据您服务器上Tomcat的安装目录不同,您需要执行的命令有差异。
本教程中,server.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章节中获取配置说明。