2013-05-18 85 views
1

这已报告在bugs.php.net。如果我更换的libeay32.dll和xampp/apache/bin ssleay32.dllxampp/php/那么它的工作原理相同的文件,但我不能使用SSLPHP OpenSSL - openssl_private_encrypt崩溃网页

我需要使用SSL,有没有人能解决这个问题?


我对XAMPP(1.8.1)使用OpenSSL的PHP(5.4.7)进行加密,解密,等我也使用本地主机上的SSL。

我能创建使用openssl_pkey_new()法公私密钥对,生成证书也是如此。

但是,当我尝试访问我的根证书(创建使用上述功能)网页崩溃

$root_private_key = openssl_get_privatekey(file_get_contents($path), $pass); 
echo "KEY: " . $root_private_key; // KEY: Resource id #11 
openssl_private_encrypt($plaintext, $encrypted_data, $root_private_key); 

我甚至使用phpseclib库尝试,但也做同样的事情。

我也曾尝试设置ini_set('max_execution_time', 0);


我检查PHP日志,它是空的,发现如下的Apache日志

[mpm_winnt:notice] [pid 3312:tid 484] AH00428: Parent: child process exited with status 3221225477 -- Restarting. 
[ssl:warn] [pid 3312:tid 484] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache] 
[mpm_winnt:notice] [pid 3312:tid 484] AH00455: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 configured -- resuming normal operations 
[mpm_winnt:notice] [pid 3312:tid 484] AH00456: Server built: Aug 18 2012 12:41:37 
[core:notice] [pid 3312:tid 484] AH00094: Command line: 'apache\\bin\\httpd.exe -d C:/xampp/apache' 
[mpm_winnt:notice] [pid 3312:tid 484] AH00418: Parent: Created child process 1520 
AH00548: NameVirtualHost has no effect and will be removed in the next release C:/xampp/apache/conf/extra/httpd-vhosts.conf:19 
[ssl:warn] [pid 1520:tid 496] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache] 
[mpm_winnt:notice] [pid 1520:tid 496] AH00354: Child: Starting 150 worker threads. 

我有尝试以下,但没有任何帮助:

PHP openssl_public_encrypt causing Page Timeout/Connection Reset?

php/timeout/connection to server reset?

Apache server (xampp) crashes when using openssl function

PHP dies unexpectedly without error

我希望得到任何帮助/建议。

+0

在哪里崩溃? – doptimusprime

+0

如果我不使用'openssl_private_encrypt()'方法,那么它运行良好。 – user427969

+0

它似乎没有得到私钥。 – doptimusprime

回答

1

这已经报道bugs.php.net。如果我在XAMPP与相同的文件替换XAMPP /阿帕奇/斌下列文件/ PHP/那么它的工作原理:

  • 的libeay32.dll
  • ssleay32.dll

,但SSL不能使用否则Apache的启动时给出了错误。

+0

有没有解决这个问题的方法,但不强制我禁用SSL?我需要两个。 – nathanjosiah

+0

@nathanjosiah对不起,我找不到任何解决方案。我可以使其工作的唯一方法是禁用SSL。 – user427969

+0

我已经发布了一个新的答案,解决了这两个问题 – nathanjosiah

0

phpseclib使用OpenSSL(如果可用)生成RSA私钥。要禁用此行为,做到这一点后,地穴/ RSA.php已被列入:

define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL); 

多大,顺便说一句,是你想生成密钥?

1

对于那些仍然有问题:

直到XAMPP的完全封装的正式版本发布与Apache的下一个版本,应该可以解决这个错误,我已经成功地通过改变我的Apache的版本修复了这个问题到这里找到的一个:http://www.apachelounge.com/download/这修复了这个错误,但仍然允许我使用OpenSSL

此页面上的第二个Apache 2.2.4下载专门用于修复此错误。对我来说很容易,因为:

  • 停止Apache
  • 重命名xampp\apachexampp\apacheold以防万一它打破了。
  • 复制的Apache24xampp\Apache24从下载的zip
  • 重新命名为apache
  • xampp\apacheold文件夹中的文件.bat复制到新xampp\apache文件夹。
  • xampp\apacheold
  • 启动Apache取代了xampp\apache\conf文件夹与一个又

我希望这可以帮助别人。