我正在尝试在我的Windows上安装XAMPP(1.7.3)的OpenSSL,它内置了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环境常量,我尝试了这个方法,但没有任何改变。
使用
var_dump
检查OPENSSL_CONF
的路径为:C:/xampp/apache/bin/openssl.cnf
,这是我的计算机上正确的路径。我检查了php目录的路径(其中包含ssleay32.dll和libeay32.dll),发现它没有定义在我的系统变量中,所以我定义了它,重新启动了我的计算机,在此过程中重启了apache,但错误信息没有改变。
我的xampp版本没有提供php_openssl.dll文件,因此我认为php.ini文档应该将其从可用的.dll列表中排除,正如我检查时所做的那样。我相信xampp编译时使用了基于zend的扩展代替了它。
我能够从xampp gui启动openssl,并成功创建了私钥/公钥对。 phpinfo()报告如下:
我在系统目录中发现了来自wamp安装的旧ssleay.dll和libeay32.dll,但我已经删除了它们。(重启后,并重新启动了apache)openssl OpenSSL支持已启用
OpenSSL库版本 OpenSSL
0.9.8l 5 Nov 2009 OpenSSL头文件版本 OpenSSL 0.9.8l 5 Nov 2009
我尝试将openssl.cnf复制到默认目录'C:\usr\local\ssl\openssl.cnf',但没有改变。
我还阅读了这个和这个线程,但给出的答案虽然相关,但未能提供帮助或不存在。
有人有任何想法吗?我应该检查下一个步骤或者有什么明显的问题我忽略了吗?
OPENSSL_CONF
是C:/xampp/apache/bin/openssl.cnf
,已经配置得很好了。唯一的小问题是 Windows 使用反斜杠而不是正斜杠。 - jww