You need to enable JavaScript to run this app.
导航

安装JKS格式证书到Tomcat服务器

最近更新时间2023.09.22 16:31:34

首次发布时间2022.11.03 20:34:32

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时,您可以根据需求和使用的工具选择适当的证书格式来生成或管理证书。

前提条件

  • 您已经通过证书中心提交了SSL证书请求,并且SSL证书已经签发。
    如果您还没有提交SSL证书请求,请参见快速入门
  • 您的服务器的8443/443端口是开放的。
    HTTPS通信的默认端口是8443/443,因此只有当服务器开放了8443/443端口,才能保证服务器能够处理客户端发起的HTTPS连接请求。

环境说明

本教程以以下环境为例介绍相关的操作步骤:

  • 服务器:

    • 操作系统:Ubuntu 22.04 64位
    • Web服务程序:Apache Tomcat/10.0.23 版本
    • Tomcat 的安装目录:/opt/tomcat

    说明

    服务器环境不同,可能导致实际配置步骤与本文描述有差异。这种情况下,您需以实际环境为准,本文只作为参考。

  • 示例域名:ssl.example.com
    下图展示了网站没有安装SSL证书时,用户通过HTTP协议访问域名的结果。浏览器提示连接是不安全的。

教程概览

本教程将指导您修改Tomcat服务器的主配置文件server.xml,以开启8443/443端口监听并关联JKS格式的证书。
具体步骤如下:

  1. 准备JKS格式的SSL证书

  2. 上传证书到Tomcat服务器

  3. 在Tomcat上配置证书

  4. 验证证书是否配置成功

步骤1:准备JKS格式的SSL证书

JKS格式的证书文件中包含证书和私钥。只有当您将证书和私钥都托管在证书中心时,您才可以从证书中心下载JKS格式的证书文件。具体分为以下情形:

  • 证书请求使用了证书中心自动生成的CSR
  • 证书请求使用了您手动输入的CSR,同时您提供了对应的私钥

满足上述情形时,当您的证书签发后,您可以下载JKS格式的证书。如果不满足上述情形,则当您的证书签发后,您可以下载PEM格式的证书,然后自行使用工具将证书转换为JKS格式。

关于下载证书的具体操作,请参见下载证书

下载JKS格式的证书

证书中心控制台下载 Tomcat(JKS格式) 证书压缩包到本地计算机。
alt

下载证书压缩包后,解压缩证书压缩包到本地计算机。证书压缩包名称为<CommonName>_jks。其中,<CommonName>表示证书颁发给的域名。解压缩后,您将获得以下文件:

  • <CommonName>.jks:证书文件,包含证书和私钥。

  • keystorePass.txt:证书密码文件,包含证书密码。

    说明

    • 您每次下载证书时,系统都会随机生成一个与当前证书匹配的证书密码。证书密码保存在keystorePass.txt
    • 目前不支持您指定证书密码。

下载PEM格式的证书

证书中心控制台下载 其他 类型服务器的证书压缩包。下载证书压缩包后,解压缩证书压缩包到本地计算机。

证书压缩包名称为<CommonName>_other。其中,<CommonName>表示证书颁发给的域名。解压缩后,您将获得以下文件:

  • <CommonName>.crt:证书文件。
  • <CommonName>.pem:证书文件(PEM 编码)。

接下来,您需要使用相应工具(如OpenSSL、Keytool等)将证书文件和您保管的私钥文件,转换成JKS格式的证书文件。关于证书格式转换的操作,请参见证书格式转换

步骤2:上传证书到Tomcat服务器

上传本地文件到远程服务器的方式有很多,本教程以使用scp命令为例,介绍如何将证书从本地Windows计算机上传到Tomcat服务器。

  1. 远程登录Tomcat服务器。

  2. 在Tomcat安装目录,创建一个用于存放证书的文件夹,命名为cert

    Tomcat版本不同,安装目录可能不同,具体以您使用的Tomcat版本为准。
    本示例中,Tomcat安装目录为/opt/tomcat

    cd /opt/tomcat
    mkdir cert
    

    说明

    您可以使用find / -name server.xml命令,查询server.xml配置文件所在路径。该路径即为Tomcat安装目录。

  3. 打开本地计算机的Shell工具。
    以Windows 10操作系统为例,在桌面左下角的开始图标上单击鼠标右键,然后单击Windows PowerShell

  4. 使用scp命令上传证书文件到服务器。

    scp <文件在本地计算机的路径> root@<远程服务器IP>:/opt/tomcat/cert
    

    执行scp命令后,需根据命令提示,输入远程服务器的root账号的密码。
    示例:

    scp C:\ssl.example.com.jks root@<远程服务器IP>:/opt/tomcat/cert
    
  5. 验证文件上传成功。
    在Tomcat服务器,执行ll /opt/tomcat/cert命令,列举cert目录的文件。
    如果文件列表中包含证书文件,表示证书已上传成功。

步骤3:在Tomcat上配置证书

Tomcat服务器的主配置文件是server.xml。该文件位于 Tomcat安装目录的conf目录。根据您服务器上Tomcat的安装目录不同,您需要执行的命令有差异。
本教程中,server.xml的完整路径为 /opt/tomcat/conf/server.xml

  1. 编辑server.xml

    vim /opt/tomcat/conf/server.xml
    
  2. 定位到如下区域:

    <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
    ……
    -->
    
  3. 将该区域下方的<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证书,请使用您在生成证书时设置的密码。

    修改后的内容如下图所示。

  4. 重启Tomcat,使配置调整生效。

    1. 进入bin目录。bin目录位于Tomcat安装目录。

      cd /opt/tomcat/bin
      
    2. 关闭Tomcat。

      ./shutdown.sh
      
    3. 打开Tomcat。

      ./startup.sh
      

步骤4:验证证书是否配置成功

注意

进行验证操作前,请确保服务器已开放8443或443端口。如果您的服务器因安全组、防火墙等策略,未允许8443和443端口访问,请先修改对应策略。

打开本地计算机上的浏览器,使用HTTPS格式地址访问域名:https://ssl.example.com
成功建立连接后,在浏览器地址栏出现锁状图标,表示连接是安全的。

您可以单击锁状图标,查看连接详情,例如获取证书信息等。

(可选)HTTP请求强制跳转为HTTPS请求

网站启用HTTPS通信后,您还可以修改Tomcat的web.xml配置,使终端用户的HTTP请求强制跳转为HTTPS请求,确保终端用户总是通过HTTPS协议访问您的Web服务。

web.xml文件位于Tomcat安装目录的conf目录。根据您服务器上Tomcat的安装目录不同,您需要执行的命令有差异。

本教程中,server.xml的完整路径为 /opt/tomcat/conf/web.xml

  1. 编辑配置文件。

    vim /opt/tomcat/conf/web.xml
    
  2. 定位到配置文件末尾,在</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>
    

    修改后的内容如下图所示。

  3. 打开本地计算机上的浏览器,使用HTTP格式地址访问域名:http://ssl.example.com
    如果地址自动被转换为HTTPS格式,则表示HTTP请求已强制跳转为HTTPS请求。

参考信息

更多关于Tomcat 10 SSL/TLS配置的信息,请参见 Apache Tomcat 10官方文档
如果您使用的是其他版本的Tomcat,建议您从相应版本的Apache Tomcat文档的SSL/TLS章节中获取配置说明。