Tomcat服务器安装SSL证书

更新时间: 2024-12-25 18:24:38

本文介绍了在Tomcat服务器上配置JKS(Java KeyStore)和PFX(也称为PKCS12)格式SSL证书的方法,涵盖证书文件的下载与上传、配置证书参数及安装后的验证步骤。完成配置后,用户可通过HTTPS协议安全访问Tomcat服务器,保障数据传输的安全。

重要

本文以安装在Linux操作系统中的Tomcat 7和8.5为例介绍。不同版本的操作系统或Web服务器,部署操作可能有所差异,如有问题,请联系产品技术专家进行咨询,详情请参见专家一对一服务

证书格式选择说明

选择证书格式时需考虑实际需求、资源情况和系统兼容性。

  • JKS是Java的标准密钥库格式,被广泛应用于基于Java的应用和服务中。如果您主要在Java环境中工作,且使用的工具和脚本都与JKS兼容良好,那么选择JKS可能更为自然和方便。

  • PFX是一种跨平台通用标准,不仅被Java支持,也被其他非Java环境(如Windows系统、IIS服务器、各种编程语言的SSL库等)广泛接受。如果您需要在多种技术栈之间共享证书,或者与非Java系统有紧密集成,PFX可能提供更好的互操作性。

前提条件

  • 已通过数字证书管理服务控制台签发证书。具体操作,请参见购买SSL证书提交证书申请

  • SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。您可以通过DNS验证证书工具,检测域名DNS解析是否生效。具体操作,请参见DNS生效验证

  • 已在Web服务器开放443端口(HTTPS通信的标准端口)。

    如果您使用的是阿里云ECS服务器,请确保已经在安全组规则入方向添加TCP 443端口。具体操作,请参见添加安全组规则

步骤一:下载SSL证书

  1. 登录数字证书管理服务控制台

  2. 在左侧导航栏,选择证书管理 > SSL证书管理

  3. SSL证书管理页面,定位到目标证书,在操作列,单击更多,然后选择下载页签。

  4. SSL证书文件下载。

    下载PFX格式证书

    服务器类型为Tomcat的操作列,单击下载

    image..png

    下载JKS格式证书

    服务器类型为JKS的操作列,单击下载

    image..png

  5. 解压缩已下载的SSL证书压缩包。

    根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示。CSR

    CSR生成方式

    证书压缩包包含的文件

    系统生成选择已有的CSR

    包括以下文件:

    • 证书文件(PFX格式/JKS格式):默认以证书ID_证书绑定域名命名。

    • 密码文件(TXT格式):默认以证书格式-password命名

      重要

      每次下载证书时都会产生新的密码,该密码仅匹配本次下载的证书文件。

    手动填写

    • 如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。

    • 如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换

步骤二:在Tomcat服务器安装证书

  1. 将解压后的证书文件和密码文件上传到Tomcat服务器的conf目录。

    说明

    Tomcat安装目录与您的服务器环境有关,您可以使用sudo find / -iname "*tomcat*"命令,查询Tomcat的安装目录。

    您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTy、Xshell或WinSCP等。如果您使用的阿里云云服务器 ECS,上传文件具体操作,请参见上传或下载文件(Windows)上传文件到Linux云服务器

  2. 进入Tomcat安装根目录,执行以下命令,打开server.xml文件。

    sudo vim ./conf/server.xml 
  3. 按照以下示例以及注释说明配置server.xml。

    重要

    为避免启动Tomcat时出现错误,请在复制代码时删除注释。

    Tomcat 7和8.5及以上版本在安装SSL证书时步骤相似,但因支持的Java版本及配置文件格式有异,故具体配置稍有不同。下面将针对这两个版本介绍如何配置SSL证书,请根据您的Tomcat版本选择合适的配置方法。

    • Tomcat7:Tomcat服务器自动选择SSL的实现方式。如果按照该方式无法完成后续配置,可能是因为您的环境不支持自动选定的SSL实现方式。

      • 配置项:

        image..png

      • 配置示例:

        PFX格式Tomcat7配置示例

        <!-- #port属性根据实际情况修改(HTTPS默认端口为443)。如果使用其他端口号,则您需要使用https://domain_name:port的方式来访问您的网站。 
        keystoreFile值需替换为证书的实际路径。
        keystorePass值需替换为证书密码文件pfx-password.txt中的内容。
        如需了解其他配置项,请前往Tomcat官网查看。-->
        <Connector port="443"
                   protocol="HTTP/1.1"
                   SSLEnabled="true"
                   scheme="https"
                   secure="true"
                   keystoreFile="conf/domain_name.pfx"
                   keystoreType="PKCS12"
                   keystorePass="证书密码"
                   clientAuth="false"
                   SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
                   ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

        JKS格式Tomcat7配置示例

        <!-- #port属性根据实际情况修改(HTTPS默认端口为443)。如果使用其他端口号,则您需要使用https://domain_name:port的方式来访问您的网站。 
        keystoreFile值需替换为证书的实际路径。
        keystorePass值需替换为证书密码文件jks-password.txt中的内容。
        如需了解其他配置项,请前往Tomcat官网查看。-->
        <Connector port="443"
                   protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectport="8443"
                   maxParameterCount="1000"
                   SSLEnabled="true"
                   scheme="https"
                   secure="true"
                   keystoreFile="conf/domain_name.jks"
                   keystoreType="JKS"
                   keystorePass="证书密码"
                   clientAuth="false"
                   SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
                   ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>    
    • Tomcat8.5及以上:手动指定SSL的实现方式(指定使用JSSE实现方式)。

      • 配置项:

        image..png

      • 配置示例(需去掉<!- - 和 - ->注释符):

        PFX格式Tomcat8.5配置示例

        <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   maxThreads="150" SSLEnabled="true"
                   maxParameterCount="1000">
            <SSLHostConfig>
                <!-- conf/domain_name.pfx请您替换为证书的实际路径,证书密码替换为证书密码文件pfx-password.txt中的内容 -->
                <Certificate certificateKeystoreFile="conf/domain_name.pfx"
                             certificateKeystorePassword="证书密码"
                             type="RSA"/>
            </SSLHostConfig>
        </Connector>

        JKS格式Tomcat8.5配置示例

        <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                   maxThreads="150" SSLEnabled="true"
                   maxParameterCount="1000">
            <SSLHostConfig>
                <!-- conf/domain_name.jks请您替换为证书的实际路径,证书密码替换为证书密码文件jks-password.txt中的内容 -->
                <Certificate certificateKeystoreFile="conf/domain_name.jks"
                             certificateKeystorePassword="证书密码"
                             type="RSA"/>
            </SSLHostConfig>
        </Connector>
  4. 可选:在/conf/web.xml文件,配置HTTP请求自动跳转HTTPS。

    1. 进入Tomcat安装根目录,执行以下命令,打开web.xml文件。

      sudo vim ./conf/web.xml 
    2. 在web.xml文件最底部添加以下配置项。

      <security-constraint>
          <web-resource-collection>
              <web-resource-name>SSL</web-resource-name>
              <url-pattern>/*</url-pattern>
          </web-resource-collection>
          <user-data-constraint>
              <transport-guarantee>CONFIDENTIAL</transport-guarantee>
          </user-data-constraint>
      </security-constraint>
  5. 进入Tomcat的bin目录,执行以下命令,停止并重启Tomcat。

    • 停止命令

      sudo ./shutdown.sh
    • 重启命令

      sudo ./startup.sh

步骤三:验证SSL证书是否安装成功

证书安装完成后,您可通过访问证书的绑定域名验证该证书是否安装成功。

https://yourdomain   #需要将yourdomain替换成证书绑定的域名。
  • 如果浏览器的地址栏出现image图标,表示证书已经安装成功。

  • 从Chrome 117版本开始,Chrome浏览器将地址栏HTTPS的image改为了image图标。请单击该图标,参考如下示例,出现image标志时,表示证书安装成功。

    image

相关文档

SSL证书部署后未生效或访问网站显示不安全

上一篇: 在Ubuntu系统下的Apache2安装SSL证书 下一篇: 安装PFX格式证书
阿里云首页 数字证书管理服务(原SSL证书) 相关技术圈