PHP openssl_pkcs7_verify在无效证书上返回true

PHP openssl_pkcs7_verify在无效证书上返回true,php,openssl,smime,Php,Openssl,Smime,我正在尝试使用openssl_pkcs7_verify()验证S/MIME消息签名 使用“传输测试工具” 我正在向我的地址发送示例S/MIME消息,在成功解码后,我尝试验证它的签名 如果证书正确,我就成功了, 但当证书无效时,我也获得了成功 如何使用PHP或openssl命令正确验证它 <?php # Good cert $bRes = openssl_pkcs7_verify('decoded_1.txt', 0, 0, array('nist.gov.pem', 'sampleca.n

我正在尝试使用openssl_pkcs7_verify()验证S/MIME消息签名

使用“传输测试工具” 我正在向我的地址发送示例S/MIME消息,在成功解码后,我尝试验证它的签名

如果证书正确,我就成功了, 但当证书无效时,我也获得了成功

如何使用PHP或openssl命令正确验证它

<?php
# Good cert
$bRes = openssl_pkcs7_verify('decoded_1.txt', 0, 0, array('nist.gov.pem', 'sampleca.nist.gov.pem'));
$bErr = openssl_error_string();
var_dump($bRes, $bErr); # returns true, false

# Invalid cert
$bRes = openssl_pkcs7_verify('decoded_2.txt', 0, 0, array('nist.gov.pem', 'sampleca.nist.gov.pem'));
$bErr = openssl_error_string();
var_dump($bRes, $bErr); # returns true, false

我已经设法在我的数据上运行openssl命令。首先,我将两个证书合并到一个文件中:“cat sampleca.nist.gov.pem nist.gov.pem>concat.pem”,然后运行“openssl smime-verify-in decoded_1.txt-CAfile concat.pem”,得到结果=0。解码的_2.txt的结果相同。奇怪…我已经设法在我的数据上运行openssl命令。首先,我将两个证书合并到一个文件中:“cat sampleca.nist.gov.pem nist.gov.pem>concat.pem”,然后运行“openssl smime-verify-in decoded_1.txt-CAfile concat.pem”,得到结果=0。解码的_2.txt的结果相同。奇怪的