我试着按照这里的步骤:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html
为了验证一个实例标识文档,当我在实例上运行(使用OpenSSL 1.0.2k-fips 26 Jan 2017)和在我的Macbook上运行失败(使用LibreSSL 2.2.7)时,我会获得成功。
我对文件做了不同的处理,没有什么区别。SHA1包括在下面。
有什么明显的原因会失败吗?不太确定从这里往哪里走。
在这种情况下:
[ec2-user@ip-10-215-73-128 ~]$ openssl smime -verify -in $PKCS7 -inform PEM -content $DOCUMENT -certfile AWSpubkey -noverify > /dev/null
Verification successful
[ec2-user@ip-10-215-73-128 ~]$ ls
AWSpubkey
[ec2-user@ip-10-215-73-128 ~]$ echo $DOCUMENT
/tmp/iid
[ec2-user@ip-10-215-73-128 ~]$ echo $PKCS7
/tmp/iid.pkcs7
[ec2-user@ip-10-215-73-128 ~]$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[ec2-user@ip-10-215-73-128 ~]$ sha1sum $DOCUMENT
0ab2144f3a388f9ab211fcc61b79d9c3996aae13 /tmp/iid
[ec2-user@ip-10-215-73-128 ~]$ sha1sum $PKCS7
986e701e30828217a3289a79df2759beda5eacc2 /tmp/iid.pkcs7
[ec2-user@ip-10-215-73-128 ~]$ sha1sum AWSpubkey
58f35f20bd57ec01773c29d08ff813c6b6479837 AWSpubkey当地:
$ openssl smime -verify -in $PKCS7 -inform PEM -content $DOCUMENT -certfile AWSpubkey -noverify > /dev/null
Verification failure
140735950726088:error:21075076:PKCS7 routines:PKCS7_verify:content and data present:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.50.2/libressl/crypto/pkcs7/pk7_smime.c:297:
$ ls
AWSpubkey iid.pkcs7 instance.iid
$ echo $DOCUMENT
instance.iid
$ echo $PKCS7
iid.pkcs7
$ openssl version
LibreSSL 2.2.7
$ sha1sum $DOCUMENT
0ab2144f3a388f9ab211fcc61b79d9c3996aae13 instance.iid
$ sha1sum $PKCS7
986e701e30828217a3289a79df2759beda5eacc2 iid.pkcs7
$ sha1sum AWSpubkey
58f35f20bd57ec01773c29d08ff813c6b6479837 AWSpubkey发布于 2018-11-29 07:38:02
我认为这是由于旧的LibreSSL/OpenSSL版本中的错误处理不同而产生的问题。(认为MacOS真的应该使用一些新的东西来实现它们的缺省值)
在旧版本中,当非分离的PKCS7签名与输入内容一起提供时,会引发错误(基本上假定数据不会同时在签名和外部文件中引用)。以后的版本默认只在使用标志调用时才抛出错误,或者完全根据分支跳过检查。
您可以尝试通过使用更新的LibreSSL或OpenSSL版本进行验证来修复此问题。您可以通过macport或自制的方式在mac上获得这些。
发布于 2021-08-03 20:37:56
如果您忽略了-content $DOCUMENT部件,它实际上在本地工作,并且openssl将假定内容已经包含在pkcs7文件中。
https://security.stackexchange.com/questions/198674
复制相似问题