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

Spring Boot配置DigiCert SSL证书报DerInputStream.getLength()错误如何解决

IllegalArgumentException: DerInputStream.getLength(): lengthTag=109, too big 异常的核心原因是Spring Boot加载的SSL密钥库文件和你配置的密钥库类型不匹配,或者密钥库文件本身损坏/加载错误。

存在的操作问题

  • 代码中硬编码配置server.ssl.key-store-type为PKCS12,但实际传入args[1]的密钥库是JKS格式,两种格式解析逻辑不兼容直接触发解析错误
  • 传入的密钥库路径错误,程序加载了非密钥库的其他文件(比如PEM格式的单证书文件、文本文件等)
  • 密钥库文件生成过程出错,本身已经损坏无法解析
  • 代码没有做参数校验,启动时参数不足导致加载的路径异常,读取了错误文件

修复方案

  1. 匹配密钥库类型配置
    先验证你使用的密钥库实际格式,执行命令:

    keytool -list -keystore 你的密钥库文件路径
    

    如果输出里显示密钥库类型是JKS,把代码中的配置修改为:

    defaults.put("server.ssl.key-store-type", "JKS");
    

    如果你需要使用PKCS12格式,用以下命令转换密钥库格式后再使用:

    keytool -importkeystore -srckeystore 你的原密钥库路径 -srcstoretype JKS -destkeystore 新的PKCS12密钥库路径.p12 -deststoretype PKCS12
    
  2. 校验文件和参数有效性
    启动前先确认args[1]传入的路径指向正确的密钥库文件,同时补充参数校验逻辑避免空指针、数组越界问题:

    if(args.length >=2 && args[0].equalsIgnoreCase("https")) {
        File keyStoreFile = new File(args[1]);
        if(!keyStoreFile.exists()) {
            throw new RuntimeException("密钥库文件不存在:" + args[1]);
        }
        // 原有配置逻辑
    }
    
  3. 重新生成密钥库(如果文件损坏)
    如果执行keytool验证密钥库时报错,按照DigiCert的证书导出流程重新生成符合要求的密钥库文件,确认密钥库密码、别名和代码中配置的完全一致即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:54:03