使用OpenSSL 3搭建TSA时遇签名证书用途无效错误,求解决
问题描述
我尝试用OpenSSL 3搭建时间戳服务器(TSA):先在ca目录建了私有CA,又在tsa目录生成了TSA的密钥和证书,也配置了tsa/openssl.cnf。生成时间戳查询请求(request.tsq)一切正常,但执行生成时间戳响应的命令时,弹出错误:
openssl tsa: invalid signer certificate purpose
803BDC56027F0000:error:17800075:time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:../crypto/ts/ts_rsp_sign.c:163:
请问我漏了什么配置?
解决办法
这个错误的根源是你的TSA签名证书没有配置timeStamping扩展用途(Extended Key Usage)。OpenSSL 3对TSA证书的用途校验很严格,必须明确指定该证书用于时间戳签名,不然会拒绝使用它生成响应。
按下面的步骤修复:
- 给TSA证书添加时间戳扩展
在生成TSA证书请求(CSR)的配置,或者你的私有CA的openssl.cnf里,加入以下扩展段:[tsa_ext] extendedKeyUsage = critical,timeStamping- 如果是在TSA的CSR配置里,生成CSR时要指定使用这个扩展段(比如用
-extensions tsa_ext参数); - 如果是在CA的配置里,要确保签发TSA证书时自动应用这个扩展。
- 如果是在TSA的CSR配置里,生成CSR时要指定使用这个扩展段(比如用
- 重新签发TSA证书
如果之前的TSA证书没带这个扩展,需要重新生成CSR(或者直接用CA重新签发,确保扩展被加上),得到新的TSA证书。 - 确认证书扩展正确
用这条命令检查证书是否包含了正确的扩展:
正常输出应该能看到:openssl x509 -in tsa_cert.pem -text -noout | grep -A 2 "Extended Key Usage"Extended Key Usage:
Time Stamping - 更新TSA配置
确保tsa/openssl.cnf里指定的签名证书是新生成的、带有正确扩展的证书,路径别写错。
做完这些再重新运行生成时间戳响应的命令,问题应该就能解决了。
内容的提问来源于stack exchange,提问作者Zsolti Vagyok
相关产品推荐
相关产品推荐

