问题:
当我使用用于HTTPSnetworking服务器的证书签署消息时,OpenSSL不想validation它。
签署消息:
回声“TestMessage”| openssl smime \ -标志 \ -inkey server-key.pem \ -signer server-crt.pem \ -certfile server-crt.pem \ -noattr -nodetach \ -outform DER \ -out signedmessage.dat
validation消息:
openssl smime \
validation\
-in signedmessage.dat \
-inform DER \
-signer server-crt.pem \
-CAfile ca-crt.pem \
validation失败
34379118248:错误:21075075:PKCS7例程:PKCS7_verify:证书validation错误:/ usr / src / secure / lib / libcrypto /../../../ crypto / openssl / crypto / pkcs7 / pk7_smime.c:342:validation错误:不支持的证书目的
现在,我知道我应该用允许这个目的的证书签署我的信息。
但是有没有办法绕过检查和核实签名呢?
以下是CA和证书的创build过程:
CA创build:
openssl req -x509 -new -newkey rsa:4096 -keyout ca-key.pem -out ca-crt.pem
创build证书:
openssl req -new -newkey rsa:4096 -keyout server-key.pem -out server-csr.pem -nodes openssl ca -config openssl.cnf -extensions server -cert ca-crt.pem -keyfile ca-key.pem -in server-csr.pem -out server-crt.pem
openssl.cnf中的扩展定义:
[服务器] extendedKeyUsage = serverAuth keyUsage = digitalSignature,keyEncipherment ...
Openssl smime在validation模式下将-purpose选项传递给opensslvalidation的调用。 因此,您应该能够添加-purpose sslserver并validation它。 我在版本1.0.2d上testing了它,它运行良好。