Tomcat服务器安装SSL证书

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

概述

本文主要介绍如何将下载的证书安装到Tomcat服务器上。

详细信息 

阿里云SSL证书服务支持下载证书安装到Tomcat服务器,从而使Tomcat服务器支持HTTPS安全访问。本文介绍了证书安装的具体操作。

注意

  • 确认您的Tomcat服务器上已经开启了8443端口,即HTTPS服务的默认端口。
  • 如果一个域名有多个服务器,则每一个服务器上都要去部署。

下载证书

  1. 登录SSL控制台,确认您的证书状态为已签发
  2. 下载SSL证书,具体请参见下载证书

在Tomcat服务器中安装SSL证书

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

  • 如果申请证书时的生成方式为系统自动创建CSR,具体操作请参见系统自动创建CSR
  • 如果申请证书时的生成方式为自己创建CSR,具体操作请参见自己创建CSR

系统自动创建CSR

  1. 在本地解压已下载的证书文件。确认有Tomcat文件夹。
  2. Tomcat文件夹内获得包含PFX证书文件和pfx_password.txt密码文件。
    说明每次下载都会产生新密码,该密码仅匹配本次下载的证书。如果需要更新证书文件,同时也要更新密码。申请证书时如果没有选择系统自动创建CSR,则没有该文件,请选择其它服务器下载CRT文件,利用openssl命令自己生成PFX证书,具体请参见自己创建CSR

自己创建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格式证书。
      openssl pkcs12 -export -out server.pfx -inkey server.key -in server.pem
    3. 此时系统需要您输入PFX证书密码,该密码为用户自定义密码,请根据您的需要对密码进行设置,然后按Enter键。
      注意
      • 请谨慎保管您的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中设置的PFX证书密码,然后按Enter键。若系统返回类似以下信息,则说明转换成功,已在OpenSSL工具安装目录下成功生成server.jks文件。
      已成功导入别名1的条目。
      已完成导入命令:1个条目成功导入,0个条目失败或取消
    6. %JAVA_HOME%/jdk/bin目录下新建一个keystorePass.txt文件,将JKS的密码保存在该文件中。
  4. 在Tomcat的安装目录下创建cert目录,并且将server.jks证书文件keystorePass.txt密码文件拷贝到cert目录中。

修改配置文件

关于如何修改配置文件,本节会对Tomcat 7和Tomcat 8.5/9两个环境进行介绍,请根据您的实际情况进行选择:

Tomcat 7

  1. 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
    <!--
        <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                   maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                   clientAuth="false" sslProtocol="TLS" />
        -->
  2. 删除<!- -- ->注释符后,增加以下2个变量参数,请参考更多信息参数说明一,修改keystoreFile和keystorePass参数的值。
  3. 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
    <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
  4. 将Host Name变量设置为证书绑定的域名,下面以www.domain.com为例。
    <Host name="www.domain.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
  5. 保存server.xml配置文件。

Tomcat 8.5/9

  1. 在Tomcat安装目录的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. 删除<!- -- ->注释符后,参考更多信息参数说明二,修改certificateKeystoreFile参数值。然后新增certificateKeystorePassword参数值,最终配置内容类似如下。
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="xxxx"
           certificateKeystorePassword="xxxx"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
  3. 在Tomcat安装目录的server.xml文件中定位到以下部分内容。
    <Host name="localhost"  appBase="webapps"
          unpackWARs="true" autoDeploy="true">
  4. 将Host Name变量设置为证书绑定的域名,下面以www.domain.com为例。
    <Host name="www.domain.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
  5. 保存server.xml配置文件。

重启Tomcat服务

  1. 进入Tomcat的bin目录。
  2. 执行以下命令,停止Tomcat服务。
    ./shutdown.sh
  3. 等待大约10秒后,执行以下命令,启动Tomcat服务。
    ./startup.sh
    说明:若进程被守护进程自动拉起,则无需手动启动。

结果验证

进入浏览器,访问您的站点网址,确认浏览器地址栏左侧显示锁标识,如下图所示,说明您的证书已经安装成功。

说明:如果在安装证书过程中遇到问题,可参见证书安装配置出错或网站无法访问

更多信息

参数说明一

参数 参数说明

port

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

protocol

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

keystoreFile

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

keystorePass

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

clientAuth

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

参数说明二

参数 参数说明

port

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

protocol

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

certificateKeystoreFile

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

certificateKeystorePassword

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

适用于

  • SSL证书