我无法让我的websocket通过HTTPS工作。通过https的AWS EC2 websocket ERR_SSL_VERSION_OR_CIPHER_MISMATCH
当我在本地主机上并通过http连接到它(并将node.js服务器更改回http)时,一切正常。
然而,在生产,我无法连接到它通过HTTP由于混合内容问题,当我Node.js的服务器为https和WebSocket的网址更改为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证书,那么如何让我的web套接字与在https上运行的站点一起工作呢?
我也尝试用ws://
代替https://
,因为我看到某处提示,但结果与HTTP相同并且被阻止。
这里是我的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。同样的错误。
我从服务器上获取绝对没有响应头或任何东西(我假设它甚至没有达到它为AWS服务器找不到SSL证书的程度),但它使我绝对不知道我该如何调试。
如何从https网站连接到AWS上的websocket?
我是否真的必须为服务器购买并设置第二个SSL证书?
你试过安全websocket协议wss://? – stdunbar
@stdunbar我只是试过,仍然是同样的错误。 – MLyck