我有一个PKCS7签名,我可以用
来解析内容openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text
但是如何使用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");
然而,我没有成功地使用PHP手册中提到的任何函数解析数据。它使用openssl与:
openssl pkcs7 -inform PEM -in signature.pkcs7 -print_certs -text
答案 0 :(得分:5)
不幸的是,我认为没有简单的解决方案。如果要在PHP中解析PKCS#7 DER编码签名,则需要一些ASN.1解析器。 PHP中的OpenSSL函数无法执行此操作。
Do any PHP libraries exist for parsing ASN.1 or generating PHP code based on it?
尝试使用一些引用的解析器解码DER数据。如果任何解析器可以工作,您应该能够查看和提取所需的信息。作为第一步,您可以从phpseclib项目尝试在线解析器。
答案 1 :(得分:0)
这个解决方案怎么样:)
<?php
$result = shell_exec('openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text');
var_dump ($result);
// you can use preg_match() if you want to parse something specific