【问题标题】:OpenSSL error 0x2006D002 when creating CSR创建 CSR 时出现 OpenSSL 错误 0x2006D002
【发布时间】:2014-05-09 22:55:00
【问题描述】:

我有错误

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 作为 Apache 模组;
  • phpinfo:已启用 OpenSSL 支持
  • OpenSSL 库版本 0.9.8y 2013 年 2 月 5 日
  • PHP 已重新安装并已重新启动。

【问题讨论】:

  • openssl errstr 0x2006D002 返回error:2006D002:BIO routines:BIO_new_file:system lib。文件或目录可能不存在。 keyConfigsslConfig 是否出现错误?
  • 我想,我已经发现了我的错误。 Openssl_csr_new 函数可以接受第三个参数 - 它必须是来自 openssl_pkey_new 的 $keyConfig。我稍后检查下一个代码并在这里写。

标签: php openssl


【解决方案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 );

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 2011-05-05
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多