繁体   English   中英

PHP OpenSSL - openssl_private_encrypt崩溃网页

[英]PHP OpenSSL - openssl_private_encrypt crashes webpage

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

我需要使用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 / timeout /连接服务器重置?

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

PHP意外死亡而没有错误

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

对于那些仍然遇到麻烦的人:

直到完全打包的xampp官方版本与下一版本的apache一起发布才能解决这个问题,我已经成功修复了这个问题,将我的Apache版本改为一个: http//www.apachelounge.com/download /这修复了错误,但仍允许我使用OpenSSL

此页面上的第二个Apache 2.2.4下载专门用于修复此错误。 对我来说很简单:

  • 停止Apache
  • xampp\\apache重命名为xampp\\apacheold以防它崩溃。
  • 复制在Apache24xampp\\Apache24从下载的zip
  • 将其重命名为apache
  • .bat文件从xampp\\apacheold文件夹复制到新的xampp\\apache文件夹中。
  • xampp\\apache\\conf文件夹替换为xampp\\apacheold文件夹
  • 再次启动Apache

我希望这有助于某人。

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

  • 的libeay32.dll
  • ssleay32.dll

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

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

define('CRYPT_RSA_MODE', CRYPT_RSA_MODE_INTERNAL);

有多大,顺便说一下,你想要产生的关键是什么?

暂无
暂无

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

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