2017-04-24 22 views
0

私は安全なwebsocket経由でサーバの機能をテストしようとしています。私は定期的な接続を介して正常に接続するクライアントを書いているが、私はWSS経由で接続することはできません。ここに私の関数はWSSを経由して接続することです:安全なwebsocketに接続するためのpythonの使用

def connectWSS(self, certCAFile, certFile, keyFile): 
    self.ws = websocket.WebSocketApp(self._wss_url, on_message = 
    self.on_message, on_error = self.on_error, on_close = self.on_close) 
    self.ws.on_open = self.on_open 

    socketOptions = {"ca_certs": certCAFile, "keyfile": keyFile, 
    "certfile": certFile} 

    def run(*args): 
     print "Starting..." 
     logger = logging.getLogger(__name__) 
     logger.info("Connecting to websocket") 
     self.ws.run_forever(sslopt=socketOptions) 

    thread.start_new_thread(run,()) 

私はちょうどssloptフィールドに

"cert_reqs": ssl.CERT_NONE 

を追加できることを認識し、私は、サーバーがあることを確認するための証明書を使用してWSSを経由して接続したいです実際にそれらをチェックする。私は両方のサーバーとのための自己署名証明書を使用しています

EOF occurred in violation of protocol (_ssl.c:590) 

:私はに実行している問題は、私は私のパスフレーズ、私は次のエラーを取得していますに入ったとき、それは

Enter PEM pass phrase: 

のために私を促したときでありますクライアント、私はopensslを使用して証明書を自分で生成しました。これは私の証明書に問題があるのですか?私はこの安全なwebsocketのものにはかなり新しいので、誰かが正しい方向に私を指すことができれば、それは非常に高く評価されるでしょう。

答えて

0

証明書に問題があります。 FQDNまたはIPを使用していますか?私はそれがホスト名をチェックする原因と思うFQDNを使用する必要があります。 You can check more explanation here

+0

しかし、有効にすると、クライアント側から証明書を要求するオプションがサーバー側にある場合はどうなりますか?どのように証明書を提出すればいいですか? 上記のコードでは、sslオプションとして証明書/ Key/CACertファイルを提供しています。それは効果があるようですが無効なパスを入力すると文句を言います 'socketOptions = {" ca_certs ":" invalid.path "、" keyfile ":" invalid.path "、" certfile ":" invalid " .path "}' – Ted

+0

はい、そうです。こちらをご覧くださいhttp://stackoverflow.com/questions/11884704/how-to-set-find-the-ca-certs-argument-in-python-ssl-wrap-socket。したがって、自己署名証明書でも信頼できます。 – norekhov

関連する問題