AWS EC2 websocket通过https ERR_SSL_VERSION_OR_CIPHER_MISMATCH

时间:2017-04-05 23:31:19

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

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

当我在localhost上并通过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证书,那么如何让我的网络套接字与https上运行的网站一起使用?

我也尝试将https://替换为ws://,因为我看到某处建议,但结果与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证书?

1 个答案:

答案 0 :(得分:0)

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