circuitpython: SSL error with 8.2.2 or later when talking to github
CircuitPython version
boot_out.txt
Adafruit CircuitPython 8.2.3 on 2023-08-11; Adafruit MatrixPortal S3 with ESP32S3
Board ID:adafruit_matrixportal_s3
INFO_UF2.TXT
TinyUF2 Bootloader 0.14.0-5-g45bc2fc - tinyusb (0.15.0-331-ge3b3229d6)
Model: Adafruit MatrixPortal S3
Board-ID: ESP32-S3-MatrixPortal-revB
Date: May 18 2023
Code/REPL
# SPDX-FileCopyrightText: 2020 Brent Rubell for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import os
import ipaddress
import ssl
import wifi
import socketpool
import adafruit_requests
# URLs to fetch from
TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
JSON_QUOTES_URL = "https://www.adafruit.com/api/quotes.php"
JSON_STARS_URL = "https://api.github.com/repos/adafruit/circuitpython"
print("ESP32-S2 WebClient Test")
print(f"My MAC address: {[hex(i) for i in wifi.radio.mac_address]}")
print("Available WiFi networks:")
for network in wifi.radio.start_scanning_networks():
print("\t%s\t\tRSSI: %d\tChannel: %d" % (str(network.ssid, "utf-8"),
network.rssi, network.channel))
wifi.radio.stop_scanning_networks()
print(f"Connecting to {os.getenv('WIFI_SSID')}")
wifi.radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
print(f"Connected to {os.getenv('WIFI_SSID')}")
print(f"My IP address: {wifi.radio.ipv4_address}")
ping_ip = ipaddress.IPv4Address("8.8.8.8")
ping = wifi.radio.ping(ip=ping_ip) * 1000
if ping is not None:
print(f"Ping google.com: {ping} ms")
else:
ping = wifi.radio.ping(ip=ping_ip)
print(f"Ping google.com: {ping} ms")
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
print(f"Fetching text from {TEXT_URL}")
response = requests.get(TEXT_URL)
print("-" * 40)
print(response.text)
print("-" * 40)
print(f"Fetching json from {JSON_QUOTES_URL}")
response = requests.get(JSON_QUOTES_URL)
print("-" * 40)
print(response.json())
print("-" * 40)
print()
print(f"Fetching and parsing json from {JSON_STARS_URL}")
response = requests.get(JSON_STARS_URL)
print("-" * 40)
print(f"CircuitPython GitHub Stars: {response.json()['stargazers_count']}")
print("-" * 40)
print("Done")
Behavior
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
ESP32-S2 WebClient Test
My MAC address: ['obfuscated']
Available WiFi networks:
SlurpNet RSSI: -57 Channel: 10
Connecting to SlurpNet
Connected to SlurpNet
My IP address: obfuscated
Ping google.com: 0.0 ms
Fetching text from http://wifitest.adafruit.com/testwifi/index.html
----------------------------------------
This is a test of Adafruit WiFi!
If you can read this, its working :)
----------------------------------------
Fetching json from https://www.adafruit.com/api/quotes.php
----------------------------------------
[{'text': 'I don’t care that they stole my idea — I care that they don’t have any of their own', 'author': 'Nikola Tesla'}]
----------------------------------------
Fetching and parsing json from https://api.github.com/repos/adafruit/circuitpython
Traceback (most recent call last):
File "adafruit_requests.py", line 515, in _get_socket
OSError: Failed SSL handshake
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "code.py", line 58, in <module>
File "adafruit_requests.py", line 711, in get
File "adafruit_requests.py", line 650, in request
File "adafruit_requests.py", line 496, in _get_socket
RuntimeError: Sending request failed
Code done running.
Press any key to enter the REPL. Use CTRL-D to reload.
Description
Using Internet Test code from MatrixPortal S3 learn guide.
- succeeds SSL handshake with Adafruit HTTPS quotes url
- fails SSL handshake with HTTPS Github API
I have no problem viewing https://api.github.com/repos/adafruit/circuitpython with my browser. Shows all the JSON data fine. For whatever reason Github is failing to handshake with the MatrixPortal S3.
Additional information
This is only to report that a portion of code in a learn guide does not function correctly. I’m honestly not sure why it’s failing.
Using adafruit_requests.mpy from adafruit-circuitpython-bundle-8.x-mpy-20230815
Matrix Portal is not connected to any matrix panels at this time. Using the board as I would a feather S3 with wifi.
I can get it to ignore the error with try/except but that’s not the point in the case of learn guide code.
About this issue
- Original URL
- State: closed
- Created 10 months ago
- Comments: 24 (4 by maintainers)
I plan to release an 8.2.x with updated root certificates soon.
The change to
nina-fw
that we think introduced this problem was initially done in the 8.2.x branch. However, it probably started affecting main today when we merged #8317.After nina-fw is updated, the fix in CircuitPython will probably initially be made in 8.2.x and merged into main subsequent to that, though it depends on how Dan and/or Scott want to handle it.