我试图通过安全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东西很陌生,所以如果有人能指出我正确的方向,我将不胜感激。
答案 0 :(得分:0)
您的证书有问题。 您使用的是FQDN还是IP?您应该使用FQDN我认为因为它将检查主机名。 You can check more explanation here