用php执行openssl s_client

时间:2013-07-04 18:03:00

标签: php openssl

我正在尝试从PHP连接到.me注册商EPP OT& E服务器但没有成功。 我正在使用php-epp库(https://github.com/centralnic/php-epp),但问题是我无法打开连接。

我可以使用以下命令打开连接(或至少看起来如此):

openssl s_client -connect ote1.meregistry.net:700 -cert certificate.crt -key privateKey.key -CAfile PCA-3.pem -showcerts -state

返回:

  

已连接(00000003)

     

SSL_connect:before / connect initialization

     

SSL_connect:SSLv2 / v3写客户端问候A

如何在PHP中重现此命令?我试过这个没有成功:

 $context = stream_context_create();
 stream_context_set_option($context, 'ssl', 'local_cert', 'pemcertificate.pem');
 stream_context_set_option($context, 'ssl', 'passphrase', '');
 stream_context_set_option($context, 'ssl', 'cafile', 'PCA-3.pem');
 stream_context_set_option($context, 'ssl', 'verify_peer', false);
 stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
 $epp = new Net_EPP_Client();
 echo "\nConnecting..";
 $epp->connect('ote1.meregistry.net', 700, 20, true, $context);

我收到此错误:

  

stream_socket_client():SSL操作失败,代码为1. OpenSSL   错误消息:错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3   警报握手失败

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:1)

我发现了问题:我使用的证书无效。

此外,对于某些服务器,命令openssl s_client需要一个标志 -no_tls1 ,允许命令正确执行。

希望它对其他人有用!