2012-05-31 46 views
4

我在OSX 10.6上使用了openssl 1.0.1b的命令行界面。Openssl命令行无法验证早先创建的分离的smime签名

首先我创建一个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的不提醒我该证书是自签名

回答

3

我已经想通了这个问题。

因为我没有使用-binary标志openssl正在将输入文件中的\ n转换为\ r \ n