Openssl_x509_export_to_file:无法从参数1获取证书


openssl_x509_export_to_file : cannot get cert from parameter 1

我有一个由iOS Dev Center通过证书签名请求生成的Apple Push Notification Development Push SSL证书。

我想使用PHP转换证书格式。在Terminal/shell中,我可以执行以下命令来转换证书格式:

openssl x509 -in aps_developer_identity.cer -inform der -out push_cert.pem
在PHP中,我有:
$result = openssl_x509_export_to_file('/path/to/aps_developer_identity.cer', '/path/to/push_cert.pem');
但是,PHP会发出一个警告:
openssl_x509_export_to_file() : cannot get cert from parameter 1

在PHP文档中,第一个参数可以是证书文件的文件路径。

鉴于:

  • 证书已经存在并且可以被PHP脚本访问,
  • 输出路径有效且有写权限,
  • PHP openssl模块已安装
  • 使用Ubuntu 12.04 LTS

有什么问题吗?

来自phpseclib,一个纯PHP X.509实现:

"-----BEGIN CERTIFICATE-----'r'n" .
chunk_split(base64_encode($cert), 64) .
'-----END CERTIFICATE-----'