2017-04-05 17 views
0

WebSocketをHTTPSで動作させるのに問題があります。AWS EC2 websocket over https ERR_SSL_VERSION_OR_CIPHER_MISMATCH

私がlocalhostに接続しているときにhttpで接続し、node.jsサーバーをhttpに戻すと、すべて正常に動作します。

しかし生産で、私が原因混在したコンテンツの問題にHTTPを介して接続することができない、と私はhttpsにHTTPSへのNode.jsサーバーとのWebSocketのURLを変更したときに、私は次のエラーを取得する:

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://に置き換えようとしましたが、どこかに示唆したように見えましたが、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に接続するにはどうすればよいですか?

実際にサーバー用の2番目のSSL証明書を購入してセットアップする必要はありますか?

+0

セキュアwebsocketプロトコルwss://を試したことがありますか? – stdunbar

+0

@stdunbar私はそれを試しましたが、それと同じエラーです。 – MLyck

答えて

0

明らかに、SSL証明書が必要でした。購入して設定した後、httpsは完全に正常に動作します。

+0

あなたはどこで宿題を終えましたか?それをS3やAWSにない他のサーバーでホストすることは可能ですか? – jdog

関連する問題