我正在运行Windows XP 32位
我刚刚从以下URL下载了Openssl并安装了它. http://www.slproweb.com/products/Win32OpenSSL.html
然后我尝试使用以下命令创建自签名证书
openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)
然后它开始给出以下错误
无法从/usr/local/ssl/openssl.cnf加载配置信息
然后谷歌搜索后我改变了上面的命令
openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)
但现在我在命令提示符中收到以下错误
C:\ OpenSSL\bin\openssl.conf的第-1行错误
4220:错误:02001002:系统库:fopen:没有这样的文件或目录:.\ crypto\bio\bss_file.c:126:fopen('C:\OpenSSL\bin\openssl.conf','rb')4220:错误:2006D080:BIO例程:BIO_new_file:没有这样的文件:.\ crypto\bio\bss_file.c:129:
4220:错误:0E078072:配置文件例程:DEF_LOAD:没有这样的文件:.\ crypto\conf\conf_def.c:197:
请帮忙.提前致谢.
问题: OpenSSL无法在我的Windows环境中运行.OpenSSL重复报告错误0x02001003,0x2006D080和0x0E064002.
环境:
Windows NT x 6.1 build 7601 (Windows 7 Business Edition Service Pack 1) i586
Apache/2.4.4 (Win32)
PHP/5.4.13 x86
PHP Directory: E:\wamp\php\
Virtual Host Directory: E:\Projects\1\public_html
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
extension=php_openssl.dllE:\wamp\php\extras\openssl.cnfE:\wamp\phpconfigargs<Directory E:\wamp\php\extras>在apache配置中指定openssl.cnf到virtualhost public_html,指向并仍然得到相同的错误码:
$privateKey = openssl_pkey_new();
while($message = openssl_error_string()){
echo $message.'<br />'.PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
结果:
error:02001003:system library:fopen:No such …Run Code Online (Sandbox Code Playgroud) 所以我试图让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;
}
Run Code Online (Sandbox Code Playgroud)
我收到了一条返回的消息:
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
Run Code Online (Sandbox Code Playgroud)
我读了php.net页面,告诉我需要设置openssl.cnf和ssleay.dll环境常量的可能性,我试过但没有改变.
一var_dump中OPENSSL_CONF导致的路径: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.我有Windows 7和Xampp,它在APache目录中有OpenSSL(虽然我在openssl_pkey_new()时遇到一些问题(请参阅为什么openssl_pkey_new()失败?).
无论如何,一旦我配置了OpenSSL,创建新密钥对并将其保存在文件中的代码是什么样的?
我需要在我的php项目中使用openssl,所以我使用openssl创建了一个测试php页面.但是,我不断收到这些错误,我不知道为什么.openssl已启用.
警告:openssl_pkey_export()[function.openssl-pkey-export]:无法从第18行的C:\ wamp\www\opensslsample\index.php中的参数1获取密钥
警告:openssl_pkey_get_details()期望参数1为资源,布线在第21行的C:\ wamp\www\opensslsample\index.php中给出
<?php
//echo phpinfo();
$privateKey = openssl_pkey_new(array(
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($privateKey, $privkey,"123");
$pubkey=openssl_pkey_get_details($privateKey);
$pubkey=$pubkey["key"];
?>
Run Code Online (Sandbox Code Playgroud)