【发布时间】: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