You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot配置购买的SSL证书启动失败,报DerInputStream错误

问题根源分析

兄弟,你遇到的DerInputStream.getLength(): lengthTag=109, too big错误,本质是生成的PKCS12密钥库格式损坏,问题出在创建密钥库的步骤上:

你执行的keytool -import命令是用来将公钥证书导入到已有的密钥库中,但你却传入了hanzien_de.key这个私钥文件——这完全不符合该命令的使用场景,直接导致生成的keystore_hanzien.de.p12是一个无效的PKCS12文件,Tomcat加载时无法解析DER格式,自然启动失败。

正确的解决步骤

购买的SSL证书一般包含三个核心文件:你的域名证书(比如hanzien_de.crt)、CA中间证书链(比如ca_bundle.crt)、你当初申请证书时生成的私钥文件hanzien_de.key。你需要用openssl命令把这些文件合并成合法的PKCS12密钥库,具体操作如下:

  1. 执行openssl命令生成有效PKCS12文件:
openssl pkcs12 -export -in hanzien_de.crt -inkey hanzien_de.key -certfile ca_bundle.crt -name tomcat -out keystore_hanzien.de.p12

执行时会提示你设置一个密码,这个密码要和后续配置里的key-store-password严格一致。

参数说明:

  • -export:指定生成PKCS12格式的导出文件
  • -in:你的域名证书文件路径
  • -inkey:对应的私钥文件路径
  • -certfile:CA中间证书链文件路径(必须加上,否则浏览器会提示证书不被信任)
  • -name:证书别名,要和你application.properties里的server.ssl.key-alias=tomcat一致
  • -out:输出的PKCS12文件路径
  1. 替换旧的密钥库文件
    把生成的新keystore_hanzien.de.p12放到项目的classpath:keystore/目录下,替换原来的无效文件。

  2. 核对配置
    确保application.properties里的配置和你生成文件时的设置匹配:

# ==============================================================
# = SSL配置
# ==============================================================
security.require-ssl=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore/keystore_hanzien.de.p12
server.ssl.key-store-password=你在openssl命令中设置的密码
server.ssl.key-alias=tomcat
额外注意事项
  • 别再用keytool -import处理私钥文件了,这个命令的作用是导入公钥证书到密钥库,不是用来合并私钥和证书生成新密钥库的。
  • 如果你的私钥文件设置了密码保护,执行openssl命令时会提示你输入私钥密码,确保你知道这个密码。
  • 生成PKCS12时的密码要和配置里的key-store-password完全一致,大小写、特殊字符都不能错。

内容的提问来源于stack exchange,提问作者tobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:19:20