React SecureServer 运行但在浏览器中抛出 SSL_ERROR_NO_CYPHER_OVERLAP
React SecureServer runs but throws SSL_ERROR_NO_CYPHER_OVERLAP in browser
我们已经设置了一个安全套接字服务器,它在使用 SecureServer 保护它之前一直在工作。 运行 php 脚本成功,但当尝试从应用程序连接时,浏览器抛出 SSL_ERROR_NO_CYPHER_OVERLAP 错误。
我们的 php 脚本可能有问题。有人知道如何解决这个问题吗?
我们有代码:
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
new React\Socket\SecureServer(
$webSock,
$loop,
array(
'local_cert' => 'xxx',
'allow_self_signed' => true,
'verify_peer' => false,
// Not sure what to put in ciphers ??
'ciphers' => 'EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!RC4:!MEDIUM'
)
)
);
一些文章建议修改浏览器配置,但所有访问者都应该可以连接。(无需修改)
编辑:我们在错误的地方使用了 SecureServer,添加了更正代码的答案。
当 cipher suites used by the server has no entries in common with the ones used by the client, or browser. I would take a look at your 'ciphers'
line and ensure you list the suites correctly, and that you use modern suites 的列表可能在现代浏览器中可用时,可能会发生此错误。
关于密码套件的 OpenSSL 文档有一个 full list of available suites and the proper format 用于指定它们。特别是,我发现明确列出套件比您当前的符号更容易,这很容易意外排除所有或大部分套件。您也可以只指定一个系列,例如列表中的 TLSv1.2
。
将 React\Socket\SecureServer 与 Ratchet 结合使用:
// Set up secure React server
$webSock = new React\Socket\SecureServer(
new React\Socket\Server($loop),
$loop,
array(
'local_cert' => 'xxxx/combined.pem',
//'allow_self_signed' => true,
'verify_peer' => false
)
);
$webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect (127.0.0.1 || 0.0.0.0)
// Ratchet magic
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
$webSock
);
我们已经设置了一个安全套接字服务器,它在使用 SecureServer 保护它之前一直在工作。 运行 php 脚本成功,但当尝试从应用程序连接时,浏览器抛出 SSL_ERROR_NO_CYPHER_OVERLAP 错误。
我们的 php 脚本可能有问题。有人知道如何解决这个问题吗?
我们有代码:
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
new React\Socket\SecureServer(
$webSock,
$loop,
array(
'local_cert' => 'xxx',
'allow_self_signed' => true,
'verify_peer' => false,
// Not sure what to put in ciphers ??
'ciphers' => 'EECDH+AES:EDH+AES:-SHA1:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5:!RC4:!MEDIUM'
)
)
);
一些文章建议修改浏览器配置,但所有访问者都应该可以连接。(无需修改)
编辑:我们在错误的地方使用了 SecureServer,添加了更正代码的答案。
当 cipher suites used by the server has no entries in common with the ones used by the client, or browser. I would take a look at your 'ciphers'
line and ensure you list the suites correctly, and that you use modern suites 的列表可能在现代浏览器中可用时,可能会发生此错误。
关于密码套件的 OpenSSL 文档有一个 full list of available suites and the proper format 用于指定它们。特别是,我发现明确列出套件比您当前的符号更容易,这很容易意外排除所有或大部分套件。您也可以只指定一个系列,例如列表中的 TLSv1.2
。
将 React\Socket\SecureServer 与 Ratchet 结合使用:
// Set up secure React server
$webSock = new React\Socket\SecureServer(
new React\Socket\Server($loop),
$loop,
array(
'local_cert' => 'xxxx/combined.pem',
//'allow_self_signed' => true,
'verify_peer' => false
)
);
$webSock->listen(8080, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect (127.0.0.1 || 0.0.0.0)
// Ratchet magic
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
new Ratchet\Wamp\WampServer(
$pusher
)
)
),
$webSock
);