从本地系统连接到EPP服务器

时间:2012-12-04 05:39:12

标签: php fsockopen epp

我正在使用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服务器?

2 个答案:

答案 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]),      使用双方支持的最新版本,必须习惯      提供完整性,机密性和相互强大的客户端服务器      认证。