0
我想通過安全websocket測試服務器的功能。我寫了一個客戶端,它通過常規連接很好地連接,但我似乎無法通過WSS進行連接。這裏是我的功能,通過WSS連接:使用python連接到安全websocket
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的東西很新,所以如果任何人都可以指出我正確的方向,它將不勝感激。
但是如果在服務器端有一個選項,如果啓用,從客戶端請求證書怎麼辦?如果情況如此,我如何提供證書? 在上面的代碼中,我提供了一個證書/ Key/CACert文件作爲ssl選項。它似乎有效果,因爲如果我把一個無效的路徑,然後它抱怨它 'socketOptions = {「ca_certs」:「invalid.path」,「keyfile」:「invalid.path」,「certfile」:「無效.path「}' – Ted
是的,你是對的。看看這裏http://stackoverflow.com/questions/11884704/how-to-set-find-the-ca-certs-argument-in-python-ssl-wrap-socket。因此,您甚至可以信任自簽名證書。 – norekhov