SSL 工具集 / sslops.cn

Tomcat 服务器安装 SSL 证书(JKS 格式)

您可以通过将 SSL 证书安装到 Tomcat 服务器,使 Tomcat 服务器支持 HTTPS 安全访问。本文介绍如何在 Tomcat 服务器中安装 JKS 格式的 SSL 证书。

说明:

  • 本文档 Tomcat 版本以 tomcat9.0.13 为例。
  • 安装前请确认 443 端口未被占用;如果 443 端口已被使用,请在安装证书时绑定其他端口。

获取证书

JKS 格式部署需要用到证书包中的三个文件:

  • domain_com.jks:证书文件
  • domain_com.key:私钥文件
  • password.txt:证书密码文件

安装 SSL 证书

  1. 将已获取到的 domain_com.jks 证书文件从本地目录拷贝到 Tomcat 服务器的 /usr/tomcat9.0.13/conf 目录下。

说明:

  • 不同版本的 Tomcat 路径名称会有些许区别,请前往您的服务对应的路径进行操作。
  • 若导入 JKS 时报格式或密码错误,可能是生成 JKS 时的 JDK 版本与当前环境不一致,可在当前环境用下方命令重新转换。

如需从 PFX 文件重新转换 JKS,请参考下方命令,注意替换对应参数:

keytool -importkeystore -srckeystore domain.pfx -srcstoretype PKCS12 -srcstorepass pfxpassword -destkeystore domain.jks -deststoretype JKS -deststorepass jkspassword
  • domain.pfx:证书包中的 PFX 文件
  • pfxpassword:PFX 文件的密码(见 password.txt)
  • domain.jks:转换后生成的 JKS 文件名
  • jkspassword:JKS 文件的密码,可自行设置
  1. 编辑 /usr/tomcat9.0.13/conf 目录下的 server.xml 文件,添加一个 Connector 配置,内容如下:
<!-- keystoreFile:证书的路径 -->
<!-- keystorePass:请替换为 password.txt 密码文件中的内容 -->
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
  maxThreads="150" scheme="https" secure="true"
  keystoreFile="/usr/tomcat9.0.13/conf/domain_com.jks"
  keystoreType="JKS"
  keystorePass="证书密码"
  clientAuth="false"/>

说明: JKS 格式需显式指定 keystoreType="JKS";keystorePass 请替换为 password.txt 密码文件中的内容。

  1. 保存配置文件,在 bin 目录下执行以下命令,确认配置是否正确。
./configtest.sh
  1. 重启 Tomcat,在 bin 目录下执行以下命令:
./shutdown.sh  # 关闭 Tomcat 服务器
./startup.sh   # 启动 Tomcat 服务器

HTTP 自动跳转 HTTPS 的安全配置(可选)

如果您需要将 HTTP 请求自动重定向到 HTTPS,可以通过以下操作设置:

  1. 编辑 /usr/tomcat9.0.13/conf 目录下的 web.xml 文件,找到 </welcome-file-list> 标签。

  2. 在结束标签 </welcome-file-list> 后面换行,并添加以下内容:

<login-config>
  <!-- Authorization setting for SSL -->
  <auth-method>CLIENT-CERT</auth-method>
  <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
  <!-- Authorization setting for SSL -->
  <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>
  1. 编辑 /usr/tomcat9.0.13/conf 目录下的 server.xml 文件,将 HTTP Connector 的 redirectPort 参数修改为 SSL Connector 的端口,即 443 端口。如下所示:
<Connector port="80" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="443" />
  1. 保存配置文件,在 bin 目录下执行以下命令,确认配置是否正确。
./configtest.sh
  1. 如果配置没有问题,重启 Tomcat 服务器,即可使用域名访问,实现 HTTP 自动跳转 HTTPS。
./shutdown.sh  # 关闭 Tomcat 服务器
./startup.sh   # 启动 Tomcat 服务器
相关工具