amazon-web-services - AWS EC2 websocket 通过 https ERR_SSL_VERSION_OR_CIPHER_MISMATCH

标签 amazon-web-services ssl amazon-ec2 https websocket

我无法让我的 websocket 通过 HTTPS 工作。

当我在本地主机上并通过 http 连接到它(并将 node.js 服务器更改回 http)时,一切正常。

但是在生产中,由于混合内容问题,我无法通过 HTTP 连接到它,当我将 node.js 服务器更改为 https 并将 websocket url 更改为 https 时,出现以下错误:

https://ec2-35-166-XXX-XXX.us-west-2.compute.amazonaws.com:8080/socket.io/?EIO=3&transport=polling&t=Lj0QXtq net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH

显然,我在 AWS 的 EC2 实例上的 node.js 服务器没有 SSL 证书,那么我如何让我的网络套接字与运行在 https 上的站点一起工作?

我也尝试用 ws:// 替换 https://,正如我在某处看到的建议,但结果与 HTTP 相同,并且 get 被阻止。

这是我设置套接字的 node.js 代码:

var app = express()
var https = require( "https" ).createServer( app )
var io = require( "socket.io" )( https )
https.listen(8080, "0.0.0.0")

这是我在客户端连接到它的方式:

import io from 'socket.io-client/dist/socket.io.min'
let socket
let socketURL = 'https://ec2-35-166-XXX-XXX.us-west-2.compute.amazonaws.com:8080'
...
socket = io.connect(socketURL)

为了尝试使这项工作正常进行,我将入站安全组设置为允许来自任何地方的所有流量。所以这应该不是问题。我还尝试专门允许来自任何地方的所有 HTTPS 流量。

我还尝试将 https.listen 更改为端口 443,并从 websocket url 中删除 :8080。仍然是同样的错误。

我绝对没有从服务器返回任何响应 header 或任何内容(我假设它甚至没有做到这一点,因为它找不到 AWS 服务器的 SSL 证书),但它让我完全没有想出如何调试它。

如何从 https 网站连接到我在 AWS 上的 websocket?

我真的必须为服务器购买和设置第二个 SSL 证书吗?

最佳答案

显然它确实需要 SSL 证书。购买并设置一个后,https 完全可以正常工作。

关于amazon-web-services - AWS EC2 websocket 通过 https ERR_SSL_VERSION_OR_CIPHER_MISMATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243268/

相关文章:

amazon-web-services - 如果不使用 ELB,如何与 AWS ECS Fargate 上的应用程序通信?

amazon-web-services - 如何安全地将 .pfx 证书添加到 aws lambda

amazon-ec2 - 如何禁用 Amazon EC2 充电?

ssh - 如何通过 SSH 启动进程,让它继续运行?

两个 EC2 实例之间的 ssh

amazon-web-services - AWS VPC - 互联网网关与 NAT

amazon-web-services - 需要功能 : [CAPABILITY_IAM] Cloudformation AWS Console

database - psql : server does not support SSL, 但需要 SSL

java.lang.SecurityException : The Jar (/opt/WebSphere/AppServer7/plugins/com. ibm.ws.security.crypto.jar) 未由受信任的签名者签名

python - 如何使用 ssl 加密 cx_oracle 连接?