我在OSX 10.6上使用openssl 1.0.1b的命令行界面。
首先我创建一个DSA密钥。
openssl dsaparam -noout -out privatekey.pem -genkey 1024
接下来,我从该密钥创建一个自签名证书。
openssl req -new -outform PEM -out certificate.pem -key privatekey.pem -keyform PEM -sha1 -x509 -days 1000
接下来,我使用该证书和密钥来创建文件的分离smime签名。
openssl smime -sign -in file.zip -out file.zip.signature -outform DER -inkey privatekey.pem -signer certificate.pem
最后,我立即尝试验证相同的文件/签名*
openssl smime -verify -in file.zip.signature -inform DER -content file.zip -noverify certificate.pem > /dev/null
但不知怎的,我得到了消化失败。
PKCS7 routines:PKCS7_signatureVerify:digest failure:pk7_doit.c:1097:
PKCS7 routines:PKCS7_verify:signature failure:pk7_smime.c:410
没有更改文件,手动md5哈希匹配之前和之后,但不知何故签名摘要失败。有没有人知道我做错了什么?
感谢。
`* 请注意,-noverify用于告诉openssl不要警告我自签名证书
答案 0 :(得分:3)
我已经弄明白了这个问题。
因为我没有使用-binary标志,所以openssl将输入文件中的\ n转换为\ r \ n