我正在尝试使用stream_socket_server()创建套接字服务器.
正常连接工作正常,但我想制作一个无需证书即可加密连接的服务器.我知道这可以用ADH密码完成,是的,我知道它在理论上不如证书安全......
我首先制作这个服务器的原因是模拟一个客户端连接到的不同服务器(通过这个协议,如果你想知道的话).
客户端被配置为首先请求证书,并回退到ADH - 我已经用真实的东西测试了它,它连接没有问题,所以问题在于套接字服务器.
到目前为止我尝试的所有内容都导致了"握手失败"错误.
我试过的一些配置:
<?php
$server = stream_socket_server(
"tls://127.0.0.1:6667",
$errorno,
$errstr,
STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
stream_context_create(
array('ssl' => array('ciphers' => 'ADH'))
)
);
?>
<?php
$server = stream_socket_server(
"tls://127.0.0.1:6667",
$errorno,
$errstr,
STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
stream_context_create(
array('ssl' => array('ciphers' => '-COMPLEMENTOFALL ADH'))
)
);
?>
Run Code Online (Sandbox Code Playgroud)
我也尝试调整客户端无条件地使用ADH(与上面的第二个例子一样),仅仅是为了测试,但是也失败了.
这种情况发生在我尝试的每个PHP版本中,最新版本是5.5.0.
有任何想法吗?
我会使用像Wireshark这样的工具来检查通过线路的位,这样我就能确定握手的确切问题.没有这种能力,你将会盲目地飞行(或调试).
一旦你知道握手出了什么问题,就可以找出"为什么".