alexdlaird / pyngrok

A Python wrapper for ngrok
https://pyngrok.readthedocs.io
MIT License
416 stars 59 forks source link

Pyngrok: SSL certificate verify failed while downloading ngrok #111

Closed DevMain1953 closed 11 months ago

DevMain1953 commented 11 months ago

I want to tunnel my FastAPI server, so I installed pyngrok using poetry and created/activated virtual env.

Here is my pyproject.toml:

[tool.poetry.dependencies]
python = "^3.11"
fastapi = "^0.100.1"
uvicorn = "^0.23.2"
pyngrok = "^6.0.0"
httpx = "^0.24.1"

Then in virtual env I run command: ngrok http 9000 and get such error:

Traceback (most recent call last):
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1348, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1282, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1037, in _send_output
    self.send(msg)
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 975, in send
    self.connect()
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1454, in connect
    self.sock = self._context.wrap_socket(self.sock,
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 517, in wrap_socket
    return self.sslsocket_class._create(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 1075, in _create
    self.do_handshake()
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 1346, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\installer.py", line 117, in install_ngrok
    download_path = _download_file(url, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\installer.py", line 261, in _download_file
    response = urlopen(url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 519, in open
    response = self._open(req, data)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1391, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\sergey\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1351, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Scripts\ngrok.exe\__main__.py", line 7, in <module>
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\ngrok.py", line 527, in main
    run(sys.argv[1:])
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\ngrok.py", line 513, in run
    install_ngrok(pyngrok_config)
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\ngrok.py", line 100, in install_ngrok
    installer.install_ngrok(pyngrok_config.ngrok_path, pyngrok_config.ngrok_version)
  File "C:\Users\sergey\AppData\Local\pypoetry\Cache\virtualenvs\fast-api-telegram-bot-a-NRO46l-py3.11\Lib\site-packages\pyngrok\installer.py", line 121, in install_ngrok
    raise PyngrokNgrokInstallError("An error occurred while downloading ngrok from {}: {}".format(url, e))
pyngrok.exception.PyngrokNgrokInstallError: An error occurred while downloading ngrok from https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)>

I tried to open link https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-windows-amd64.zip from traceback in browser and it dowloaded zip, I can open it and run ngrok.exe but that didn't help. Any way to solve this?

DevMain1953 commented 11 months ago

Downloading ngrok.exe from official website, solved this problem.

github-actions[bot] commented 11 months ago

This is a bug tracker and not a support forum.

While we'd love to be able to support every person on their projects, that would simply be infeasible. Luckily, that's what the helpful developer community over at Stack Overflow is for! Please create a question there with the \"pyngrok\" tag if what you're looking for is a programming question or you need help with an integration. You can refer to pyngrok's own documentation to help you write the best possible question.