更新时间:2024-11-22 GMT+08:00

在Tomcat服务器上安装SSL证书

本文以Linux操作系统中的Tomcat7服务器为例介绍SSL证书的安装步骤,您在安装证书时可以进行参考。证书安装好后,您的Web服务器才能支持SSL通信,实现通信安全。

由于服务器系统版本或服务器环境配置不同,在安装SSL证书过程中使用的命令或修改的配置文件信息可能会略有不同,云证书管理服务提供的安装证书示例,仅供参考,请以您的实际情况为准。

前提条件

  • 证书已签发且“证书状态”“已签发”
  • 已下载SSL证书,具体操作请参见下载证书
  • 已安装OpenSSL工具。

    您可以从“https://www.openssl.org/source/”下载最新的OpenSSL工具安装包(要求OpenSSL版本必须是1.0.1g或以上版本)。

  • 已安装Keytool工具。

    Keytool工具一般包含在Java Development Kit(JDK)工具包中。

约束条件

  • 证书安装前,务必在安装SSL证书的服务器上开启“443”端口,同时在安全组增加“443”端口,避免安装后仍然无法启用HTTPS。
  • 如果一个域名有多个服务器,则每一个服务器上都要部署。
  • 待安装证书的服务器上需要运行的域名,必须与证书的域名一一对应,即购买的是哪个域名的证书,则用于哪个域名。否则安装部署后,浏览器将提示不安全。

操作步骤

在Tomcat7服务器上安装SSL证书的流程如下所示:

①获取文件②创建目录③修改配置文件④重启Tomcat⑤效果验证

步骤一:获取文件

安装证书前,需要获取证书文件和密码文件,请根据申请证书时选择的“证书请求文件”生成方式来选择操作步骤:

  • 如果申请证书时,“证书请求文件”选择“系统生成CSR”,具体操作请参见:系统生成CSR
  • 如果申请证书时,“证书请求文件”选择“自己生成CSR”,具体操作请参见:自己生成CSR

具体操作如下:

  • 系统生成CSR
    1. 在本地解压已下载的证书文件。
      下载的文件包含了“Apache”“IIS”“Nginx”“Tomcat”4个文件夹和1个“domain.csr”文件,如图1所示。
      图1 本地解压SSL证书
    2. 证书ID_证书绑定的域名_Tomcat”文件夹内获得证书文件证书ID_证书绑定的域名_server.jks”和密码文件证书ID_证书绑定的域名_keystorePass.txt”
  • 自己生成CSR
    1. 解压已下载的证书压缩包,获得证书ID_证书绑定的域名_server.pem”文件。

      证书ID_证书绑定的域名_server.pem”文件包括两段证书代码“-----BEGIN CERTIFICATE-----”“-----END CERTIFICATE-----”,分别为服务器证书和中级CA证书。

    2. 使用OpenSSL工具,将pem格式证书转换为PFX格式证书,得到“server.pfx”文件。
      1. “pem”文件和生成CSR时的私钥“server.key”放在OpenSSL工具安装目录的bin目录下。
      2. 在OpenSSL工具安装目录的bin目录下,执行以下命令将pem格式证书转换为PFX格式证书,按“Enter”。

        openssl pkcs12 -export -out server.pfx -inkey server.key -in 证书ID_证书绑定的域名_server.pem

        回显信息如下:

        Enter Export Password:
      3. 输入PFX证书密码,按“Enter”。

        此处输入的密码为用户自定义密码,请根据自己的需求进行设置并输入密码。

        回显信息如下:

        Verifying - Enter Export Password:

        请牢记此处输入的PFX证书密码。后续设置JKS密码需要与此处设置的PFX密码保持一致,否则可能会导致Tomcat启动失败。

        为提高用户密码安全性,建议按以下复杂度要求设置密码:

        • 密码长度为8~32个字符。
        • 至少需要包含大写字母、小写字母、数字、空格、特殊字符~`!@#$%^&*()_+|{}:"<>?-=\[];',./中的3种类型字符。
      4. 再次输入PFX证书密码,按“Enter”。

        当系统没有回显任何错误信息,表示已在OpenSSL工具安装目录下成功生成“server.pfx”文件。

    3. 使用Keytool工具,将PFX格式证书文件转换成JKS格式,得到“server.jks”文件。
      1. 2中生成的“server.pfx”文件复制到“%JAVA_HOME%/jdk/bin”目录下。
      2. “%JAVA_HOME%/jdk/bin”目录下,执行以下命令,按“Enter”。

        keytool -importkeystore -srckeystore server.pfx -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS

        回显信息如下:

        输入目标密钥库口令:
      3. 输入JKS证书密码,按“Enter”。

        请将JKS密码设置为与PFX证书密码相同的密码,否则可能会导致Tomcat启动失败。

        回显信息如下:

        再次输入新口令:
      4. 再次输入JKS证书密码,按“Enter”。

        回显信息如下:

        输入源密钥库口令:
      5. 输入2.c中设置PFX证书密码,按“Enter”。

        回显类似如下信息时,则表示转换成功,已在OpenSSL工具安装目录下成功生成“server.jks”文件。

        已成功导入别名1的条目。
        已完成导入命令:1个条目成功导入,0个条目失败或取消
      6. “%JAVA_HOME%/jdk/bin”目录下新建一个“keystorePass.txt”文件,将JKS的密码保存在该文件中。
    4. 将转换后的证书文件“server.jks”和新建的密码文件“keystorePass.txt”放在同一目录下。

步骤二:创建目录

在Tomcat的安装目录下创建“cert”目录,并且将证书文件“server.jks”和密码文件“keystorePass.txt”复制到“cert”目录中。

步骤三:修改配置文件

修改配置文件前,请将配置文件进行备份,并建议先在测试环境中进行部署,配置无误后,再在现网环境进行配置,避免出现配置错误导致服务不能正常启动等问题,影响您的业务。

在Tomcat7安装证书的具体操作如下:
  1. 在Tomcat安装目录conf目录下“server.xml”文件中找到如下参数:
    <!--
        <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" />
        -->
  2. 找到以上参数,去掉<!- - 和 - ->这对注释符。
  3. 增加以下2个参数,请根据表1修改参数的值。
    keystoreFile="cert/server.jks"
    keystorePass="证书密码"

    完整配置参考如下,其余参数请根据实际情况进行修改:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
          keystoreFile="cert/server.jks"
          keystorePass="证书密码"
          clientAuth="false" sslProtocol="TLS" />

    不要直接复制所有配置,只需添加“keystoreFile”“keystorePass”参数即可,其它参数请根据自己的实际情况修改。

    表1 参数说明(一)

    参数

    参数说明

    port

    指定服务器要使用的端口号,建议配置为“443”

    protocol

    设置HTTP协议,保持缺省值即可。

    keystoreFile

    “server.jks”文件存放路径,绝对路径和相对路径均可。示例:cert/server.jks

    keystorePass

    “server.jks”的密码。填写“keystorePass.txt”文件内的密码。

    须知:

    如果密码中包含“&”,请将其替换成“&amp;”,以免配置不成功。

    示例:

    如果keystorePass="Ix6&APWgcHf72DMu",则修改为keystorePass="Ix6&amp;APWgcHf72DMu"。

    clientAuth

    是否要求所有的SSL客户出示安全证书,对SSL客户进行身份验证,保持缺省值即可。

  4. 在Tomcat安装目录conf目录下“server.xml”文件中找到如下参数:
    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
  5. “Host name”改为证书绑定的域名。

    完整配置如下(以“www.domain.com”为例):

    <Host name="www.domain.com"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
  6. 修改完成后保存配置文件。

步骤四:重启Tomcat

在Tomcat bin目录下执行./shutdown.sh命令停止Tomcat服务;

等待10秒后,再执行./startup.sh命令(如进程被守护进程自动拉起,则无需手动启动),启动Tomcat服务。

步骤五:效果验证

部署成功后,可在浏览器的地址栏中输入“https://域名”,按“Enter”

如果浏览器地址栏显示安全锁标识,则说明证书安装成功。