【问题标题】:Error with fsockopen() and SSL, 'Failed to enable crypto'fsockopen() 和 SSL 出错,“无法启用加密”
【发布时间】:2011-07-26 18:59:03
【问题描述】:

我正在尝试连接到 Nominet EPP 测试平台,但我收到“无法启用加密”,这似乎是一个罕见的错误,没有记录解决方案或原因。

随行:

$socket = fsockopen('ssl://testbed-epp.nominet.org.uk', 700, $errno, $errst, 10);

我得到的确切错误是:

Warning: fsockopen() [function.fsockopen]: Failed to enable crypto in /path/classes/nominet_epp.class.php on line 53

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://testbed-epp.nominet.org.uk:700 (Unknown error) in /path/classes/nominet_epp.class.php on line 53

据我所知,OpenSSL 已与 PHP 一起安装,正如我们的 phpinfo() 中所述:

OpenSSL support     enabled
OpenSSL Version     OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Nominet 文档简要提到“为了验证安全服务器的身份,您需要 Verisign Class 3 Public Primary Certification Authority' 根证书,该证书可从 www.verisign.com 免费获得(该证书也已分发大多数网络浏览器)。 - 这可能是问题所在?

更新 根据要求,我已经对错误值以及 $socket 本身进行了 var_dump,它们都是 false/0。 fsockopen PHP docs 声明“如果 errno 中返回的值为 0 并且函数返回 FALSE,则表明错误发生在 connect() 调用之前。这很可能是由于初始化套接字时出现问题。 "

任何帮助将不胜感激。

【问题讨论】:

  • 你能打印$errno$errst吗?
  • 我刚刚 var_dumped $socket、$errst 和 $errno,它们分别是 false、empty 和 0。奇怪。
  • 你能在控制台上试试openssl s_client -ssl3 -crlf -connect testbed-epp.nominet.org.uk:700吗?
  • 返回:1409E0E5:SSL 例程:SSL3_WRITE_BYTES:ssl 握手失败:s3_pkt.c:530:
  • 您的 OpenSSL 或远程系统似乎有问题...您可以排除该选项吗?

标签: php ssl openssl nominet epp


【解决方案1】:

我遇到了完全相同的问题,原因是 Nominet 防火墙没有使用正确的 IP 地址进行更新。当您在 Nominet 控制面板中进行设置时,您需要等待一个小时才能让他们的防火墙完全更新 - 一旦完成,连接就可以正常工作。

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 2016-11-07
    • 2019-08-30
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多