我正在使用fsock open连接到epp服务器,但它失败了。下面是我的代码:(我在这里给出了错误的输入值。)
$whoisserver = "epp-test.verisign-grs.net";
$port = 123;
$timeout = 40;
$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
$out = "";
while(!feof($fp)){
$out .= fgets($fp, 128);
}
fclose($fp);
echo "<br> result <pre>\n" . $out . "\n</pre>\n <br>";
以下是我得到的错误:
Socket Error 10060 - A connection attempt failed because the connected party
did not properly respond after a period of time, or established connection
failed because connected host has failed to respond.
Epp服务器在连接时给出响应。但是连接失败了。
我还使用过CURL但在使用curl时没有得到任何响应:(这里给出了错误的输入值)
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "epp-test.verisign-grs.net");
curl_setopt($ch, CURLOPT_PORT, 123);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
$res = curl_exec($ch);
echo "response is:<br>".$res."<br>";
print "len[".strlen($res)."]\n";
curl_close($ch);
注意:当我从命令行ping epp服务器时。 Ping命令成功我收到epp服务器的回复。
如果我做错了什么?
我们不能从本地系统中获取epp服务器吗?
是否必须使用SSL连接到epp服务器?
答案 0 :(得分:0)
您从哪里获得该数据,服务器和端口? EPP端口是700,你可以用
进行技术测试openssl s_client -connect epp-test.verisign-grs.net:700
但是Verisign不允许在没有首先签订特殊协议的情况下连接到他们的服务器,并为他们建立防火墙规则。
如果您只是在玩EPP并尝试调试脚本,您可能会考虑使用CentralNIC,但您必须先询问他们的用户名和密码。
对于简单的“问候语测试”,您可以使用:
openssl s_client -connect epp-ote.centralnic.com:700
同样,这不会通过curl工作。它可以在PHP中使用“ssl://epp-ote.centralnic.com”作为您的第一个参数。但是,如果不首先阅读EPP规范,你将无法摆脱feof($ fp)和其他代码:
答案 1 :(得分:0)
对于EPP,TLS确实是强制性的,符合RFC5734:
通过TCP分层时,传输层安全性(TLS)协议 版本1.0 [RFC2246]或其后继者(如TLS 1.2 [RFC5246]), 使用双方支持的最新版本,必须习惯 提供完整性,机密性和相互强大的客户端服务器 认证。