我在使用 openssl_x509_parse() 函数时遇到问题
$parsed_cert = openssl_x509_parse(file_get_contents('/home/my_location/aaa010101aaa__csd_01.cer'));
该函数返回一个错误,我不确定原因。也许证书文件必须在.pem
or中.crt
?
编辑:代码没问题,但文件的格式是问题,所以我不得不将它从 .cer 原始文件转换为 .crt。
我在使用 openssl_x509_parse() 函数时遇到问题
$parsed_cert = openssl_x509_parse(file_get_contents('/home/my_location/aaa010101aaa__csd_01.cer'));
该函数返回一个错误,我不确定原因。也许证书文件必须在.pem
or中.crt
?
编辑:代码没问题,但文件的格式是问题,所以我不得不将它从 .cer 原始文件转换为 .crt。
从手册页中查看示例后,您的代码似乎很好。问题可能出在 file_get_contents 中。
请尝试以下方法并检查 if 文件是否有效。
$file = file_get_contents('/home/my_location/aaa010101aaa__csd_01.cer');
$parsed_cert = openssl_x509_parse($file);
现在检查什么是文件。它是否存在或有效的证书文件?
phpseclib 的纯 PHP X509 实现比 OpenSSL 对 X.509 证书的容错性更高。以下是如何使用它的示例:
<?php
include('File/X509.php');
$x509 = new File_X509();
$cert = $x509->loadX509('...'); // see google.crt
print_r($cert);
?>
至于 OpenSSL 的容错性较低......一个例子是OpenSSL 不会解码单个行长于 64 字节的密钥,而 phpseclib 会。