bg-tutorials

如何在 Tomcat 上生成 CSR

本教程将向您展示如何使用 Java 的 keytool 工具为 Apache Tomcat 生成 CSR(证书签名请求)。整个流程分两条命令:首先用 keytool -genkeypair 创建一个密钥库并在指定别名下生成私钥,然后用 keytool -certreq 导出对应的 CSR。稍后导入已签发的证书时会重复使用同一个别名,因此密钥、CSR 和最终的证书都保存在同一个位置。

您需要准备的内容

  • 已安装 Java(JDK 或 JRE),以便 keytool 命令可用。可通过 keytool -help 进行确认。
  • 能够对将托管私钥的服务器进行 Shell 或终端访问。私钥必须保留在此服务器上。
  • 要保护的确切完全限定域名(FQDN),例如 www.yourdomain.com,以及您希望覆盖的其他任何域名(用于 SAN 字段)。
  • 您组织的法定信息(国家、州/省、城市、组织名称),用于 CSR 的可分辨名称(Distinguished Name)。

第一步:创建密钥库和私钥

如果您已经生成了 CSR,可直接跳到提交 CSR部分,然后前往在 Tomcat 上安装 SSL 证书。

在服务器上打开终端,创建一个 PKCS12 格式的新密钥库。PKCS12 是现代化、可移植的标准,自 JDK 9 起已成为 Java 中默认的密钥库格式;较旧的 JKS 格式已被弃用。运行:

keytool -genkeypair 
  -alias tomcat 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yourdomain.p12 
  -validity 825

各参数的含义如下:

  • -alias tomcat:密钥库内条目的名称。选择一个您能识别的标签(通常是 tomcat 或您的域名)。请记下它。在生成 CSR 以及日后导入已签发证书时,您都必须重复使用完全相同的别名。
  • -keyalg RSA -keysize 2048:2048 位 RSA 密钥是目前公开的最低要求。对于新建密钥库,若想使用寿命更长的密钥,升级到 3072 位是合理的选择。如果您更倾向于更小、更快的密钥,多数公开 CA 也接受 ECDSA(-keyalg EC -groupname secp256r1)。
  • -storetype PKCS12:强制使用现代化的 PKCS12 密钥库。对应的文件扩展名为 .p12(或 .pfx)。
  • -keystore yourdomain.p12:要创建的密钥库文件。将文件名替换为您易于记住的名称,并妥善保管此文件;它包含您的私钥。
  • -validity 825:密钥库内自签名占位证书的有效期。CA 签发的证书稍后会替换该占位证书,因此该数值的具体大小不会影响生产环境中证书的实际有效期。

随后 keytool 会提示输入密钥库密码。请设置一个强密码,并保存在您的密码管理工具中:之后每次运行 keytool 命令以及配置 Tomcat 的 server.xml 时都会用到它。使用 PKCS12 密钥库时,密钥密码与密钥库密码相同,因此只需记住一个密码。

第二步:输入组织信息(DN)

keytool 现在会要求输入可分辨名称(Distinguished Name,DN):即将写入 CSR 的身份信息字段。请针对每个提示输入贵组织的准确、合法的信息。标点符号和准确性都很重要:如与公开的企业注册信息不符,CA 会拒绝该请求。

  • 姓名(CN):这是 keytool 的表述方式,实际对应通用名称(Common Name)字段。请输入您要保护的确切 FQDN,例如 www.yourdomain.com,或通配符如 *.yourdomain.com。不要输入个人姓名。
  • 组织单位(OU):此字段目前已不再由公开 CA 签发使用,最好留空。按 Enter 键跳过。
  • 组织(O):贵公司的完整法定名称,例如 Your Company LLC。
  • 城市或地区(L):城市的完整名称,例如 San Jose。请不要使用缩写。
  • 州或省(ST):州或省的完整名称,例如 California。请不要使用两字母代码。
  • 国家代码(C):两字母 ISO 国家代码,例如 US、GB、DE。

在最后一个提示之后,keytool 会显示一个类似 CN=www.yourdomain.com, OU=, O=Your Company LLC, L=San Jose, ST=California, C=US 的摘要信息。输入 yes 进行确认。此时密钥库文件已创建完毕,其中包含一个条目:您的别名,其中保存有私钥和一个自签名的占位证书。

如果您更倾向于非交互式命令,可以将 DN 直接写入命令,跳过所有提示:

keytool -genkeypair 
  -alias tomcat 
  -keyalg RSA -keysize 2048 
  -storetype PKCS12 
  -keystore yourdomain.p12 
  -dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US" 
  -validity 825

第三步:生成包含 SAN 的 CSR

现代浏览器和客户端会依据使用者备用名称(Subject Alternative Name,SAN)扩展来验证证书,而不仅仅依据通用名称。请在 CSR 中直接申请所需的 SAN,以便 CA 将其包含在最终签发的证书中。请使用与第一步相同的别名和密钥库:

keytool -certreq 
  -alias tomcat 
  -keystore yourdomain.p12 
  -file yourdomain.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

各参数的含义如下:

  • -alias tomcat:必须与第一步中的别名一致。此别名对应的私钥将用于对请求进行签名。
  • -keystore yourdomain.p12:必须与第一步中的密钥库一致。
  • -file yourdomain.csr:CSR 的输出文件名。
  • -ext san=dns:…:使用者备用名称扩展。请列出证书需要覆盖的每一个主机名,包括裸域名(yourdomain.com)以及 www 子域名。可以用逗号分隔添加更多条目,例如 dns:api.yourdomain.com。

keytool 会提示输入密钥库密码,并将 CSR 写入当前目录下的 yourdomain.csr 文件中。

重要提示:保留好您的别名和密钥库

在 Tomcat 上使用 keytool 时最常见的错误就是将已签发的证书导入到新的别名下。这样做会将证书作为一个不含任何私钥的独立可信条目存储起来,导致 TLS 无法正常工作。请始终将签名回复的证书导入回持有私钥的同一个别名(即第一步中使用的别名)。

请在关闭终端前,先记下以下三项信息:

  • 别名(在本指南中为 tomcat)。
  • 密钥库文件路径(例如 yourdomain.p12)。
  • 密钥库密码。

如果您不确定哪个别名持有您的密钥,可以列出密钥库内容,查找类型为 PrivateKeyEntry 的条目:

keytool -list -v -keystore yourdomain.p12

第四步:提交前先验证 CSR

在 CA 验证之前,先检查 DN 中是否存在拼写错误或 SAN 缺失。可用 keytool 打印 CSR 内容:

keytool -printcertreq -file yourdomain.csr

或者,如果已安装 OpenSSL,也可以使用它来代替:

openssl req -noout -text -in yourdomain.csr

在输出内容中确认以下三项:Subject 字段显示的是您确切的 DN,使用者备用名称 列出了您需要的所有主机名,以及 Public-Key 的大小与您所选择的一致(2048 位 RSA,或您选择的其他配置)。您也可以将 CSR 粘贴到我们的CSR 解码器中,在浏览器里进行同样的检查。

第五步:将 CSR 提交给证书颁发机构

使用任意文本编辑器打开 yourdomain.csr。该文件是纯文本格式,以 —–BEGIN CERTIFICATE REQUEST—– 开头,以 —–END CERTIFICATE REQUEST—– 结尾。复制整段内容,包括这些起始和结束标记行,并在 CA 的结账流程中粘贴到 CSR 字段。在 Windows 系统上,可使用 Ctrl + A 然后 Ctrl + C 来选取完整文本;在 macOS 系统上,可使用 Cmd + A 然后 Cmd + C。

待 CA 验证您的请求并签发证书后,请继续参阅如何在 Tomcat 上安装 SSL 证书。您需要将已签发的证书导回同一密钥库中的同一别名,然后将 Tomcat 的 HTTPS 连接器指向该密钥库。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.