我在 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:error:0DFFF0A8:asn1 encoding routines:CRYPTO_internal:wrong tag:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-47.11.1/libressl-2.8/crypto/ asn1/tasn_dec.c:1144:
4550921836:error:0DFFF03A:asn1 编码例程:CRYPTO_internal:nested 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