使用OpenSSL针对证书(而不是整个证书链)验证时间戳令牌

使用OpenSSL针对证书(而不是整个证书链)验证时间戳令牌,openssl,Openssl,我希望根据证书验证RFC 3161时间戳令牌,该证书出现在外部受信任的证书列表中,因此验证停止在那里。不需要根据完整的证书链进行验证 openssl ts-验证需要CAfile或CApath中的CA证书。是否有办法根据证书验证令牌,仅此而已?分支1.0.2中的openssl ts应用程序对证书验证过程的影响有限。使用该版本,如果不修改应用程序的代码或编写自己的解决方案,似乎不可能实现您想要的功能 然而,在OpenSSL的1.1.0分支中,进行证书验证的应用程序的配置实现已经整合并保持一致。-请参

我希望根据证书验证RFC 3161时间戳令牌,该证书出现在外部受信任的证书列表中,因此验证停止在那里。不需要根据完整的证书链进行验证


openssl ts-验证
需要CAfile或CApath中的CA证书。是否有办法根据证书验证令牌,仅此而已?

分支
1.0.2
中的
openssl ts
应用程序对证书验证过程的影响有限。使用该版本,如果不修改应用程序的代码或编写自己的解决方案,似乎不可能实现您想要的功能

然而,在OpenSSL的
1.1.0
分支中,进行证书验证的应用程序的配置实现已经整合并保持一致。-请参阅该分支概要底部的验证选项,这意味着该分支中的
openssl ts
具有与其他验证应用程序类似的证书验证配置选项。特别是,中提到的选项
-partial_chain
非常有用

在测试与您的情况类似的情况时,以下内容对我有效(其中
TSA_cert.pem
仅包含签名者的证书,不包含链):

验证相同的响应文件,但修改了三个字节:

$ openssl ts -verify -in response_corrupted.tsr -data myFile.txt -CAfile TSA_cert.pem -partial_chain
Verification: FAILED
140450542175232:error:21071065:PKCS7 routines:PKCS7_signatureVerify:digest failure:crypto/pkcs7/pk7_doit.c:1007:
140450542175232:error:2F06A06D:time stamp routines:TS_RESP_verify_signature:signature failure:crypto/ts/ts_rsp_verify.c:143:

但是,我不得不升级到
1.1.1
pre-因为我遇到了这个bug:,对于这个bug,
1.1.0

引用中没有包含修复程序;目前还不清楚它是否接受全套。如果有,您可以尝试:
-partial\u chain-no CAfile-no CApath
?(如果arg是必需的,则可能需要提供一个空CA文件。)它不起作用。。。当我添加这些选项中的任何一个时,openssl提醒我正确“使用”了
ts-verify
,我发现了一个笨拙的解决方法(使用cms)来解决类似的情况(错误的链而不是省略的链)
$ openssl ts -verify -in response_corrupted.tsr -data myFile.txt -CAfile TSA_cert.pem -partial_chain
Verification: FAILED
140450542175232:error:21071065:PKCS7 routines:PKCS7_signatureVerify:digest failure:crypto/pkcs7/pk7_doit.c:1007:
140450542175232:error:2F06A06D:time stamp routines:TS_RESP_verify_signature:signature failure:crypto/ts/ts_rsp_verify.c:143: