繁体   English   中英

调用openssl_pkey_new()时xampp openssl错误;

[英]xampp openssl errors when calling openssl_pkey_new();

所以我试图让openssl在我的Windows安装xampp(1.7.3)上工作,这是用OpenSSL 0.9.8l构建的。 这是我第二次在* amp安装上安装openssl但是第一次游泳(这是在同一台机器上的wamp安装,但我发现xampp更像是我的风格所以我切换了)。

当我尝试一个简单的设置脚本时:

var_dump(getenv('OPENSSL_CONF'));
$privateKey = openssl_pkey_new();

while($message = openssl_error_string()){
    echo $message.'<br />'.PHP_EOL;
}

我收到了一条返回的消息:

error:02001003:system library:fopen:No such process
error:2006D080:BIO routines:BIO_new_file:no such file  
error:0E064002:configuration file routines:CONF_load:system lib  

我读了php.net页面,告诉我需要设置openssl.cnf和ssleay.dll环境常量的可能性,我试过但没有改变。

OPENSSL_CONFvar_dump导致路径: C:/xampp/apache/bin/openssl.cnf这对我的机器是正确的。

我检查了php目录的路径(ssleay32.dll和libeay32.dll所在的位置)是在我的路径系统var中定义的,而不是,所以我定义了它,重新启动了我的机器,并在此过程中重新启动了apache,但错误消息没有变化。

我的xampp版本没有附带php_openssl.dll,因此我相信php.ini文档应该将它从可用的.dll列表中排除,就像我检查时一样。 我相信xampp会编译一个基于zend的扩展。

我能够从xampp gui启动openssl,并且我成功地创建了一个私钥/公钥对。

phpinfo()报道:

openssl OpenSSL支持已启用
OpenSSL库版本OpenSSL
0.9.8l 2009年11月5日OpenSSL标题版本OpenSSL 0.9.8l 2009年11月5日

我在我的系统目录中假设的wamp安装中有一个旧的ssleay.dll和libeay32.dll但是我已经删除了它们。 (重启后重启apache)

我试着将openssl.cnf复制到默认目录'C:\\ usr \\ local \\ ssl \\ openssl.cnf'没有变化。

我也阅读了这个帖子和这个帖子,但给出的答案是相关的,但没有帮助或不存在。

任何人对我接下来要检查的内容或任何我错过的明显内容都有任何想法?

也许你需要在调用openssl_pkey_new()时指定openssl.cnf文件的路径:

$configArgs = array(
    'config' => '/etc/openssl/openssl.cnf',
    // ...
);
openssl_pkey_new($configArgs);

您可能还需要在$configArgs指定其他设置才能使函数正常工作(最近没有测试过)。 有关支持的其他配置参数的说明,另请参见http://php.net/manual/en/function.openssl-csr-new.php

检查xampp / apache / conf / extra / http-xampp.conf中的OPENSSL_CONF变量

然后使用xampp / apache_start.bat启动apache而不是XAMPP控制面板(奇怪的是,从控制面板启动时它不起作用[可能是当前目录问题])

这适用于Win7 64bit上的XAMPP 1.7.4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM