我已经在macOS上使用LibreSSL 2.8.3对这样的文件进行了签名:
openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem \
-inkey passkey.pem -in manifest.json -out signature \
-outform DER -passin pass:12345
,现在我想立即验证同一文件。我正在尝试以下命令
openssl smime -binary -verify -certfile WWDR.pem -signer passcertificate.pem \
-inkey passkey.pem -in manifest.json -content signature \
-inform DER -passin pass:12345
,但是由于以下错误而失败。验证签名的正确语法是什么?
读取S / MIME消息时出错
4550921836:错误:0DFFF0A8:asn1编码例程:CRYPTO_internal:错误标签:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.11.1/libressl-2.8/crypto/asn1/tasn_dec.c: 1144:
4550921836:错误:0DFFF03A:asn1编码例程:CRYPTO_internal:嵌套的asn1错误:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.11.1/libressl-2.8/crypto/asn1/tasn_dec.c :317:Type = PKCS7
我基本上是这样做的,因为我想尝试并快速实现签名。我知道上面的sign命令可以正常工作,因此,如果我能弄清楚如何验证文件,那么就可以正确地测试我的Swift实现是否有效。
WWDR.pem文件来自http://www.apple.com/certificateauthority,是全球开发者关系证书。
要获取passcertificate.pem
和passkey.pem
文件,我去了Apple Developer门户并生成了通行证,将其导入到Mac Keychain Access中,导出到Certificates.p12,然后运行这两个文件命令:
openssl pkcs12 -in Certificates.p12 -clcerts -nokeys \
-out passcertificate.pem -passin pass:
openssl pkcs12 -in Certificates.p12 -nocerts -out passkey.pem \
-passin pass: -passout pass:12345