Проблема:
Мой сценарий test.py
, запущенный из centos
, выбрасывает UNKNOWN_PROTOCOL
при попытке подключения wss://
сервер сокетов:
sh-4.2# python test.py
Traceback (most recent call last):
File "test.py", line 4, in <module>
ws.connect("wss://agentserver.node.aliyun.com:8080")
File "/usr/lib/python2.7/site-packages/websocket/_core.py", line 223, in connect
options.pop('socket', None))
File "/usr/lib/python2.7/site-packages/websocket/_http.py", line 126, in connect
sock = _ssl_socket(sock, options.sslopt, hostname)
File "/usr/lib/python2.7/site-packages/websocket/_http.py", line 263, in _ssl_socket
sock = ssl.wrap_socket(sock, **sslopt)
File "/usr/lib64/python2.7/ssl.py", line 934, in wrap_socket
ciphers=ciphers)
File "/usr/lib64/python2.7/ssl.py", line 609, in __init__
self.do_handshake()
File "/usr/lib64/python2.7/ssl.py", line 831, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:618)
Исследование:
Я могу успешно запустить тот же сценарий на моей локальной машине macOS
, и на той же машине centos
тот же сценарий может успешно подключиться, заменив wss://
на ws://
.
Анализ:
Так что я думаю, что проблема здесь связана с ssl
.Я проверяю macOS
openssl
версию:
➜ openssl version
LibreSSL 2.6.5
и проверяю ее на centos
:
sh-4.2# openssl version
sh: openssl: command not found
Требуется помощь
Я могу установитьopenssl
on centos
by
yum install openssl
Но после его установки вылезла такая же ошибка при подключении к wss://
.Так как же заменить системный ssl по умолчанию на мой установленный openssl
?
Заранее спасибо!
PS
test.py
:
import websocket
ws = websocket.WebSocket()
# Connect to host url
ws.connect("wss://agentserver.node.aliyun.com:8080")
send_string = "Testing WebSocket"
print("Sending: ",send_string)
# Use ws.send() to send data to server
ws.send(send_string)
# Use ws.recv() to get the data sent from server
result = ws.recv()
print("Received: ",result)
# Use ws.close() to close the WebSocket handshake
ws.close()