文档首页 > > 常见问题> 证书安装与应用> 如何在Tomcat上安装SSL证书?

如何在Tomcat上安装SSL证书?

分享
更新时间: 2019/10/12 GMT+08:00

本章节介绍如何将下载的证书安装到Tomcat服务器上。安装好证书后,您的Web服务器将能支持SSL通信,从而保证您Web服务器的通信安全。

安装前,请务必在Tomcat服务器上开启“443”端口,避免安装后仍然无法启用HTTPS。

前提条件

  • 已获取管理控制台的登录账号与密码。
  • “证书状态”“已签发”
  • 已下载SSL证书。
  • 已安装OpenSSL工具。

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

  • 已安装Keytool工具。

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

操作步骤

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

  1. 获取文件
  2. 创建目录
  3. 修改配置文件
  4. 重启Tomcat
  5. 效果验证
  6. 相关操作

步骤一:获取文件

该步骤介绍如何获取证书文件和密码文件,方便后续安装证书时使用。

请根据申请证书时选择的“证书请求文件”生成方式来选择操作步骤。

系统生成CSR:如果申请证书时,“证书请求文件”选择“系统生成CSR”,可直接在已下载的证书文件中获取对应服务器的文件,请参考本部分内容进行处理。

自己生成CSR:如果申请证书时,“证书请求文件”选择“自己生成CSR”,则需要先转换证书格式,请参考本部分内容进行处理。

具体操作如下:

  • 申请证书时,如果“证书请求文件”选择“系统生成CSR”,请参考以下步骤进行配置。
    1. 在本地解压已下载的证书文件。
      下载的文件包含了 “Apache”“IIS”“Nginx”“Tomcat”4个文件夹和1个 “domain.csr”文件,如 图1所示。
      图1 解压SSL证书
    2. 从Tomcat文件夹内获得证书文件“server.jks”和密码文件“keystorePass.txt”

      密码文件“keystorePass.txt”中的密码为服务默认生成的初始随机密码,为了保证您的系统安全,建议您及时修改该密码。修改密码仅支持转换证书格式的方法进行修改,详细操作请参见主流数字证书都有哪些格式?

  • 申请证书时,如果“证书请求文件”选择“自己生成CSR”,请参考以下步骤进行配置。
    1. 解压已下载的证书压缩包,获得“server.pem”文件。

      “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 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:Tomcat7请参见本部分内容进行配置。

Tomcat8.5/9:Tomcat8.5/9请参见本部分内容进行配置。

具体操作如下:

  • Tomcat7
    1. “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. “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. 修改完成后保存配置文件。
  • Tomcat8.5/9
    1. “server.xml”文件中找到如下参数:
      <!--
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>
      -->
    2. 找到以上参数,去掉“<!- - ”“- ->”这对注释符。
    3. 配置证书相关参数,请根据表2修改参数的值。

      修改以下参数的值:

      certificateKeystoreFile="conf/localhost-rsa.jks"
      新增以下参数:
      certificateKeystorePassword="证书密码"

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

      <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="cert/server.jks"
      		     certificateKeystorePassword="证书密码"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>

      不要直接拷贝所有配置,只需修改“certificateKeystoreFile”和新增“certificateKeystorePassword”参数即可,其它参数请根据自己的实际情况修改。

      表2 参数说明(二)

      参数

      参数说明

      port

      指定服务器端要创建的端口号,建议修改为“443”

      protocol

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

      certificateKeystoreFile

      “server.jks”文件存放路径。示例:cert/server.jks

      certificateKeystorePassword

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

      注意:

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

      示例:

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

    4. “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服务;

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

效果验证

验证证书安装是否正确。
  1. 在浏览器的地址中输入“https://域名”,按“Enter”
  2. 单击,查看证书,如图2所示。
    图2 查看证书
  3. 单击“更多信息”,如图3所示。
    图3 更多信息
  4. 在弹出的“页面信息”窗口中,单击安全 > 查看证书,如图4所示。
    图4 查看证书信息
  5. 在弹出的“证书查看器”中,单击“常规”“详细信息”,通过查看证书常规信息和详细信息,确认证书是否安装成功。
    图5 证书信息

    如果证书信息确认无误,则表示证书安装正确。

相关操作

安装部署后,如果出现以下问题,请根据问题原因进行处理:

如果证书安装不正确或证书安装过程中遇到问题,请在证书下载页面右方的“一对一咨询”中,单击“立即咨询”,联系工程师进行处理。

分享:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区