Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Certificate Error #13

Closed
mcnutter1 opened this issue Aug 5, 2021 · 4 comments
Closed

Certificate Error #13

mcnutter1 opened this issue Aug 5, 2021 · 4 comments

Comments

@mcnutter1
Copy link

Lib was working great until the other day when it just stopped connecting. I'm using this as apart of the Home Assistant integration but I get the error Failed to connect. I tried the CLI tool and get this error:

python3 get_devices.py
Please choose your account region
1: Mainland China
2: Rest of the World
Region [1/2]: 2
Region code: US
Email: XXX
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 485, in wrap_socket
cnx.do_handshake()
File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1915, in do_handshake
self._raise_ssl_error(self._ssl, result)
File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1647, in _raise_ssl_error
_raise_current_error()
File "/usr/lib/python3/dist-packages/OpenSSL/_util.py", line 54, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 376, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 996, in validate_conn
conn.connect()
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 366, in connect
self.sock = ssl_wrap_socket(
File "/usr/lib/python3/dist-packages/urllib3/util/ssl
.py", line 370, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 491, in wrap_socket
raise ssl.SSLError("bad handshake: %r" % e)
ssl.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])",)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='appapi.cp.dyson.com', port=443): Max retries exceeded with url: /v3/userregistration/email/userstatus?country=US (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/rmcnutt/libdyson/libdyson/cloud/account.py", line 107, in request
response = requests.request(
File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='appapi.cp.dyson.com', port=443): Max retries exceeded with url: /v3/userregistration/email/userstatus?country=US (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "get_devices.py", line 22, in
verify = account.login_email_otp(email, region)
File "/home/rmcnutt/libdyson/libdyson/cloud/account.py", line 127, in login_email_otp
response = self.request(
File "/home/rmcnutt/libdyson/libdyson/cloud/account.py", line 117, in request
raise DysonNetworkError
libdyson.exceptions.DysonNetworkError

@alann81
Copy link
Contributor

alann81 commented Aug 5, 2021

Dyson certificate is issued by a diffierent ICA, suggested update in #14

@FireHelmet
Copy link

Hello,

I have a similar issue with certificate, please see below the trace:

C:\Users\User\Downloads\libdyson-0.8.8>python get_devices.py
Please choose your account region
1: Mainland China
2: Rest of the World
Region [1/2]: 2
Region code: FR
Email: MyEmailAdress@gmail.com
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 382, in _make_request
self._validate_conn(conn)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 1010, in validate_conn
conn.connect()
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 416, in connect
self.sock = ssl_wrap_socket(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\ssl
.py", line 449, in ssl_wrap_socket
ssl_sock = ssl_wrap_socket_impl(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\ssl
.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1070, in _create
self.do_handshake()
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='appapi.cp.dyson.com', port=443): Max retries exceeded with url: /v3/userregistration/email/userstatus?country=FR (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\User\Downloads\libdyson-0.8.8\libdyson\cloud\account.py", line 107, in request
response = requests.request(
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='appapi.cp.dyson.com', port=443): Max retries exceeded with url: /v3/userregistration/email/userstatus?country=FR (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:997)')))

My environment is:

  • Windows 10
  • Python 3.10.0

The requirements have been satisfied properly:
C:\Users\User\Downloads\libdyson-0.8.8>pip3 install -r requirements.txt Requirement already satisfied: paho_mqtt in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from -r requirements.txt (line 1)) (1.6.1) Requirement already satisfied: cryptography>=3.1 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from -r requirements.txt (line 2)) (35.0.0) Requirement already satisfied: requests in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from -r requirements.txt (line 3)) (2.26.0) Requirement already satisfied: zeroconf in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from -r requirements.txt (line 4)) (0.37.0) Requirement already satisfied: attrs in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from -r requirements.txt (line 5)) (21.2.0) Requirement already satisfied: cffi>=1.12 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from cryptography>=3.1->-r requirements.txt (line 2)) (1.15.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from requests->-r requirements.txt (line 3)) (1.26.7) Requirement already satisfied: charset-normalizer~=2.0.0 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from requests->-r requirements.txt (line 3)) (2.0.7) Requirement already satisfied: certifi>=2017.4.17 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from requests->-r requirements.txt (line 3)) (2021.10.8) Requirement already satisfied: idna<4,>=2.5 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from requests->-r requirements.txt (line 3)) (3.3) Requirement already satisfied: ifaddr>=0.1.7 in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from zeroconf->-r requirements.txt (line 4)) (0.1.7) Requirement already satisfied: pycparser in c:\users\User\appdata\local\programs\python\python310\lib\site-packages (from cffi>=1.12->cryptography>=3.1->-r requirements.txt (line 2)) (2.21)

What is wrong ? SHould I update the certificates stored in libdyson-0.8.8\libdyson\cloud\certs ? if yes, what is the method?

Thank you for your support!

@FireHelmet
Copy link

Thanks @Kakise for the code update, the issue with certificate is gone but I still have the issue #15

@Kakise
Copy link
Collaborator

Kakise commented Nov 24, 2021

Thanks for pinging me there ! I can close this issue now ! :)

@Kakise Kakise closed this as completed Nov 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants