使用OpenSSLvalidationS / MIME签名的消息而不检查证书的用途

问题:

当我使用用于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了它,它运行良好。