从php中的PKCS7签名中提取证书

use*_*778 13 php openssl signature smime pkcs#7

我需要从pkcs7签名文件中提取用户证书.我可以使用以下命令通过命令行执行此操作:

openssl pkcs7 -in somesign.pks7 -inform PEM -print_certs
Run Code Online (Sandbox Code Playgroud)

这将为我提供整个证书链,我可以处理生成的文件以提取我想要的内容.

有没有办法用openssl_pkcs7_命令做到这一点?我看到openssl_pkcs7_verify有$ outfilename,其中将存储证书,但我没有签名的消息,但似乎$ filename应该同时具有签名和消息,这不是我的情况(签名是单独的文件).

Jun*_*mil 2

我已经通过exec()函数使用它了。

exec('../../apache/bin/openssl.exe pkcs7 -in D:/mypkcs7.p7b -inform DER -print_certs').
Run Code Online (Sandbox Code Playgroud)

但我认为,最好的选择是使用SMIME文件的结构。通过分析OpenSSL的源码可以得到其结构。找到它可能很困难,但是一旦找到它,您就可以在任何地方使用它。OpenSSL GitHub 源代码可 在此处获取