使用python连接到安全websocket

时间:2017-04-24 20:14:34

标签: python-2.7 websocket ssl-certificate

我试图通过安全websocket测试服务器的功能。我写了一个通过常规连接正常连接的客户端,但我似乎无法通过WSS连接。这是我通过WSS连接的功能:

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, ())

我意识到我可以添加

"cert_reqs": ssl.CERT_NONE

到sslopt字段,但我想通过WSS使用证书进行连接,以验证服务器是否正在检查它们。我遇到的问题是当它提示我

Enter PEM pass phrase:

当我输入密码时,我收到以下错误:

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

我正在为服务器和客户端使用自签名证书,所以我使用openssl自己生成了证书。这是我的证书的问题还是我在代码中遗漏了一些东西?我对这个安全的websocket东西很陌生,所以如果有人能指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的证书有问题。 您使用的是FQDN还是IP?您应该使用FQDN我认为因为它将检查主机名。 You can check more explanation here