Używam API dla urządzenia Cisco CMXssl.SSLError: TLSv1 wersja alert protokół
i próbuje napisać kod Pythona, który sprawia, że żądania GET do API Informacja. Kod jest następujący i jest taki sam jak w pliku, z wyjątkiem niezbędnych informacji zmienionych.
from http.client import HTTPSConnection
from base64 import b64encode
# Create HTTPS connection
c = HTTPSConnection("0.0.0.0")
# encode as Base64
# decode to ascii (python3 stores as byte string, need to pass as ascii
value for auth)
username_password = b64encode(b"admin:password").decode("ascii")
headers = {'Authorization': 'Basic {0}'.format(username_password)}
# connect and ask for resource
c.request('GET', '/api/config/v1/aaa/users', headers=headers)
# response
res = c.getresponse()
data = res.read()
Jednak ja ciągle otrzymuję następujący błąd:
Traceback (most recent call last):
File "/Users/finaris/PycharmProjects/test/test/test.py", line 14, in <module>
c.request('GET', '/api/config/v1/aaa/users', headers=headers)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1106, in request
self._send_request(method, url, body, headers)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1151, in _send_request
self.endheaders(body)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1102, in endheaders
self._send_output(message_body)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 934, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 877, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 1260, in connect
server_hostname=server_hostname)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 377, in wrap_socket
_context=self)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 752, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 988, in do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 633, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:645)
Próbowałem też aktualizowanie OpenSSL, ale to nie miało żadnego wpływu.
Zobacz https://github.com/CiscoDevNet/devnet-express-dna-issues/issues/16. Wygląda na to, że używasz starej wersji OpenSSL w swoim Pythonie. Zazwyczaj ma to miejsce, jeśli używasz komputera Mac z naprawdę starą i nieaktualną wersją OpenSSL. –
Wpadam na ten problem w oknach pobierających narzędzia binarne dla mikrokontrolera Wemos. Przyczyną było to, że google zabrał mi stronę pobierania wersji 2.7.3 (starej) Myślałem, że to najnowszy ... obecnie 2.7.14 jest najnowszym i już nie ma tego problemu, działa "automatycznie" . – Feri