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

基于TPM 2.0的TLS握手在RSA-4k服务器密钥下失败(超出范围)

基于TPM 2.0的mTLS连接问题

环境说明

我有一台搭载TPM 2.0的嵌入式客户端,需要使用TPM存储的私钥通过mTLS连接远程服务器,客户端持有服务器信任的CA签发的PEM格式文件型客户端证书。为对接TPM,计划采用OpenSSL TPM Provider(tpm2-openssl)。当前测试环境为Xubuntu 23.10 VirtualBox虚拟机,使用模拟TPM 2.0。

正常场景

当服务器使用RSA-2048密钥启动时,客户端通过OpenSSL s_server和s_client可正常建立连接:

openssl s_server -accept 4443 -www -key server-2k.key -cert server-2k.crt

openssl s_client -provider tpm2 -provider default -propquery '?provider=tpm2' \
-connect localhost:4443 -CAfile ca.crt -cert client.crt -key client-tpm.priv

异常场景

切换为RSA-4096服务器密钥(与实际服务器配置一致)时,客户端出现TPM参数超出范围错误:
服务器启动命令:

openssl s_server -accept 4443 -www -key server-4k.key -cert server-4k.crt

客户端连接报错:

WARNING:esys:src/tss2-esys/api/Esys_LoadExternal.c:314:Esys_LoadExternal_Finish() Received TPM Error 
ERROR:esys:src/tss2-esys/api/Esys_LoadExternal.c:108:Esys_LoadExternal() Esys Finish ErrorCode (0x000002c4) 
40F71A26BC730000:error:4000000C:tpm2::cannot load key::-1:708 tpm:parameter(2):value is out of range or is not correct for the context
40F71A26BC730000:error:0A080006:SSL routines:tls_process_key_exchange:EVP lib:../ssl/statem/statem_clnt.c:2284:

另外,使用TPM私钥为RSA-4096客户端密钥签名CSR时,也出现相同的Load_External()函数错误:

openssl x509 -req -provider tpm2 -provider default -in test-4k.csr \
-CA ca.crt -CAkey ca.priv -out test-4k.crt 

疑问

我推测问题源于TPM 2.0不支持RSA-4096,可能是TPM Provider尝试将服务器公钥加载到TPM时被拒绝。但此前使用旧版OpenSSL Engine(tpm2-tss-engine)的方案从未出现该问题,因此有两个疑问:

  1. 关于RSA-4096服务器密钥导致连接失败的推测是否正确?
  2. 为何旧版OpenSSL Engine API可以正常处理该场景?

版本信息

$ openssl version
OpenSSL 3.0.10 1 Aug 2023 (Library: OpenSSL 3.0.10 1 Aug 2023)

$ sudo tpm2_getcap properties-fixed
TPM2_PT_FAMILY_INDICATOR:
  raw: 0x322E3000
  value: "2.0"
...
TPM2_PT_REVISION:
  raw: 0xA4
  value: 1.64
...
TPM2_PT_MANUFACTURER:
  raw: 0x49424D00
  value: "IBM"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:45:16