创建CSR时OpenSSL错误0x2006D002

时间:2014-05-09 22:55:00

标签: php openssl

我有错误

error:2006D002:BIO routines:BIO_new_file:system lib

调用openssl_csr_new函数时。

$pKey = openssl_pkey_new( $keyConfig );
$pCSR = openssl_csr_new( $sslConfig, $pKey );

没有openssl.cnf这在第一个功能上失败。

我尝试了最低openssl.cnf和实际配置,但没有效果。如果我使用错误的openssl.cnf错误将是:

error:0E064002:configuration file routines:CONF_load:system lib

请您帮忙解决正确的最低openssl.cnf或我需要修复的问题吗?

  • PHP 5.3.28 as Apache mod;
  • phpinfo:启用OpenSSL支持
  • OpenSSL Library Version 0.9.8y 2013年2月5日
  • 重新安装了PHP并已重新启动。

1 个答案:

答案 0 :(得分:1)

解决了,我需要为OpenSSL函数指定$ keyConfig:

$keyConfig = array(
    'config' => dirname($_SERVER['SCRIPT_FILENAME']) . '/store/openssl.cnf',
    ...
);
$sslConfig = array(
    "countryName" => 'XX',
    "stateOrProvinceName" => 'XX',
    "localityName" => 'XX',
    ...
);
$pKey = openssl_pkey_new( $keyConfig );
$pCSR = openssl_csr_new( $sslConfig, $pKey , $keyConfig );
$pCRT = openssl_csr_sign( $pCSR , null , $pKey , self::TIME_INTERVAL_WEEK , $keyConfig );
openssl_x509_export( $pCRT, $strCertificate );
openssl_pkey_export( $pKey, $strPrivateKey , null , $keyConfig );