我需要从pkcs7签名文件中提取用户证书.我可以使用以下命令通过命令行执行此操作:
openssl pkcs7 -in somesign.pks7 -inform PEM -print_certs
Run Code Online (Sandbox Code Playgroud)
这将为我提供整个证书链,我可以处理生成的文件以提取我想要的内容.
有没有办法用openssl_pkcs7_命令做到这一点?我看到openssl_pkcs7_verify有$ outfilename,其中将存储证书,但我没有签名的消息,但似乎$ filename应该同时具有签名和消息,这不是我的情况(签名是单独的文件).
我有一个PKCS7签名,我可以从中获取解析内容
openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text
Run Code Online (Sandbox Code Playgroud)
但是如何使用PHP的openssl函数来实现相同的输出?
编辑.我成功地使用以下函数创建了正确的PEM文件:
function der2pem($der_data, $type="CERTIFICATE") {
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN $type-----\n".$pem."-----END $type-----\n";
return $pem;
}
$data = der2pem($der_data, "PKCS7");
Run Code Online (Sandbox Code Playgroud)
然而,我并没有成功地使用PHP手册中提到的任何功能来解析数据.它使用openssl工作:
openssl pkcs7 -inform PEM -in signature.pkcs7 -print_certs -text
Run Code Online (Sandbox Code Playgroud)