使用ADH的PHP套接字服务器。怎么用?

使用ADH的PHP套接字服务器。怎么用?,php,sockets,ssl,Php,Sockets,Ssl,我正在尝试使用创建套接字服务器 正常连接可以正常工作,但我想让服务器在没有证书的情况下加密连接。我知道这可以通过ADH密码实现,是的,我知道理论上它比证书更不安全 我之所以创建这个服务器,首先是为了模拟客户机连接到的另一个服务器(如果您想知道的话,请参阅) 客户机被配置为首先请求证书,然后回退到ADH——我已经用真实的东西对它进行了测试,并且它连接没有问题,所以问题出在套接字服务器上 到目前为止,我所尝试的一切都导致了“握手失败”错误 我尝试过的一些配置: <?php $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'))
        )
    );
?>

我还试图调整客户机,使其无条件地使用ADH(如上面的第二个示例),只是为了测试,但这也失败了

我尝试过的每个PHP版本都会出现这种情况,最新版本是5.5.0


有什么想法吗?

我会使用Wireshark之类的工具来检查导线上的位,这样我就可以准确地确定握手出了什么问题。如果没有这种能力,你将盲目飞行(或调试)


一旦您知道握手出现了什么问题,您就可以找出“原因”。

首先检查服务器中是否正确设置了SSL?在服务处。我有一个测试脚本根本无法工作,因为OpenSSL调用在没有密钥文件的情况下无法运行。这不是答案,但我没有时间做更多的调查


您知道ADH是一种弱加密吗?~大多数安全咨询建议将其关闭。ADH的一般阅读

看这可能对你有帮助@krishna那篇文章甚至没有提到加密,而且考虑到未加密的连接工作正常,它根本没有帮助。出于某种原因,Wireshark无法将我的计算机的流量捕获回它自己。甚至当我用计算机的(公共)IP替换“127.0.0.1”时也是如此。我将尝试设置一台辅助计算机,看看这是否奏效……原始字节可以在这里看到,就Wireshark如何解码而言——hello数据包仅包含ADH密码(正如本次特定测试所预期的那样),服务器回复为“握手失败(40)”。哦,在客户端上,显示了以下错误消息:“错误:14094410:SSL例程:SSL3_读取_字节:sslv3警报握手失败”。(奇怪…我在两个对等方上使用TLS,而不是sslv3)是的。正如我在顶部所说的,我知道ADH比带证书的连接更不安全,我正在尝试在单元测试中创建一个服务器作为模拟,而不是为了“生产”“使用。当服务器没有证书时,真正的服务器支持ADH作为替代方案。至于SSLScan。。。我运行了,在稍微调整脚本以再次流式传输\u socket\u accept()之后,即使失败了,我仍然认为所有密码都被“拒绝”,服务器发送回与前面提到的完全相同的数据包。顺便说一句,值得注意的是。。。对于上面的测试服务器,我只得到TLSv1和SSLv3密码为“拒绝”,SSLv2密码为“失败”。当我将一个空文件作为“local_cert”上下文选项时,我还将SSLv2密码设置为“Rejected”。。。我希望如此。因为这是从安全角度写的;空文件等同于拒绝所有人的无效证书;我会在周二花更多的时间。