1

这已在bugs.php.net上报告。如果我用相同的文件替换libeay32.dll 和 ssleay32.dll,那么它可以工作,但我不能使用 SSLxampp/apache/binxampp/php/

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


我在XAMPP (1.8.1) 上的PHP (5.4.7)中使用OpenSSL库进行加密、解密等。我也在 localhost 上使用 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 导致页面超时/连接重置?

php/超时/连接到服务器重置?

使用 openssl 函数时 Apache 服务器 (xampp) 崩溃

PHP意外死亡而没有错误

我将不胜感激任何帮助/建议。

4

3 回答 3

2

对于那些仍然有问题的人:

在完全打包的 xampp 官方版本与下一个版本的 apache 一起发布之前,应该修复这个错误,我已经通过将我的 Apache 版本更改为此处找到的版本成功解决了这个问题:http: //www.apachelounge.com/download /这修复了错误,但仍然允许我使用 OpenSSL

此页面上的第二个 Apache 2.2.4 下载是专门为修复此错误而构建的。对我来说这很简单:

  • 停止阿帕奇
  • 重命名xampp\apachexampp\apacheold以防万一它坏了。
  • 从下载的 zip复制Apache24xampp\Apache24
  • 将其重命名为apache
  • .bat将文件夹中的文件复制xampp\apacheold到新xampp\apache文件夹中。
  • xampp\apache\conf将文件夹替换为来自的文件夹xampp\apacheold
  • 再次启动 Apache

我希望这对某人有帮助。

于 2013-05-30T05:41:24.517 回答
1

这已在bugs.php.net上报告。如果我将xampp/apache/bin中的以下文件替换为xampp/php/中的相同文件,则它可以工作:

  • libeay32.dll
  • ssleay32.dll

但是,不能使用 SSL ,否则 Apache 在启动时会出错。

于 2013-05-19T02:57:44.163 回答
0

phpseclib 使用 OpenSSL(如果可用)来生成 RSA 私钥。要禁用此行为,请在包含 Crypt/RSA.php 后执行此操作:

define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL);

顺便说一句,您要生成的密钥有多大?

于 2013-05-19T16:21:28.580 回答