{"id":20147371,"url":"https://github.com/gdsports/howsmyssl","last_synced_at":"2026-04-11T13:35:06.620Z","repository":{"id":130716147,"uuid":"192423947","full_name":"gdsports/howsmyssl","owner":"gdsports","description":"Compare Arduino WiFi TLS","archived":false,"fork":false,"pushed_at":"2019-06-26T05:04:02.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-03T00:22:38.592Z","etag":null,"topics":["arduino","esp32","esp8266","howsmyssl","mkr1010","tls","weather-forecast","weather-gov","wifi","wifi101","wifinina"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gdsports.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-17T21:57:48.000Z","updated_at":"2022-03-21T04:28:57.000Z","dependencies_parsed_at":"2023-07-10T13:43:21.499Z","dependency_job_id":null,"html_url":"https://github.com/gdsports/howsmyssl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gdsports/howsmyssl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fhowsmyssl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fhowsmyssl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fhowsmyssl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fhowsmyssl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gdsports","download_url":"https://codeload.github.com/gdsports/howsmyssl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gdsports%2Fhowsmyssl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31682953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","esp32","esp8266","howsmyssl","mkr1010","tls","weather-forecast","weather-gov","wifi","wifi101","wifinina"],"created_at":"2024-11-13T22:28:46.087Z","updated_at":"2026-04-11T13:35:06.598Z","avatar_url":"https://github.com/gdsports.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Comparing Arduino TLS Stacks\n\n[https://www.howsmyssl.com/](https://www.howsmyssl.com/) returns helpful\ninformation about a TLS client such as TLS version number and possible security\nissues. The rating \"Probably Okay\" is the highest possible rating.\n\nhowsmyssl has a REST API that returns a JSON string instead of HTML. The\nArduino program howsmyssl.ino uses this API and prints the results\non the serial console.\n\nThe following table summarizes the results. None of the boards received the \"Bad\"\nrating. Four received the \"Probably Okay\" rating.\n\nSee the files such as esp32.txt and mkr1010.txt for the full listing of cipher\nsuites.\n\nBoard|TLS Version|Rating|Ephemeral keys supported|Session ticket supported|TLS compression supported|Unknown cipher suite supported|Beast vuln|Able to detect n minus one splitting\n---|---|---|---|---|---|---|---|---\nmkr1010| TLS 1.2| Probably Okay| 1| 1| 0| 0| 0| 0\nfeather_wifi101| TLS 1.2| Probably Okay| 1| 0| 0| 0| 0| 0\nesp32| TLS 1.2| Probably Okay| 1| 1| 0| 0| 0| 0\nesp8266_bearssl| TLS 1.2| Probably Okay| 1| 0| 0| 0| 0| 0\nesp8266_bearssl_basic| TLS 1.2| Improvable| 0| 0| 0| 0| 0| 0\nesp8266_axtls| TLS 1.2| Improvable| 0| 0| 0| 0| 0| 0\ndue_airlift| TLS 1.2| Probably Okay| 1| 1| 0| 0| 0| 0\n\nMKR WiFi1010 uses an ESP32 running WiFiNINA firmware so it is not surprising to\nsee it has similar TLS characteristics as an ESP32 Arduino. One difference is\nthe ESP32 enables cipher suites with PSK (Pre-Shared Keys). This is not a\nsecurity problem but neither Chromium nor Firefox support TLS-PSK.\n\nThe default ESP8266 Bear SSL uses a full set of cipher suites similar to\nESP32/WiFiNINA including Elliptic Curve and Ephemeral keys. The basic options\nsupports the same cipher suites as the ESP8266 with AXTLS (no Elliptic Curve\nand no Ephemeral keys).\n\nESP8266 AXTLS and Bear SSL basic receive the \"Improvable\" rating probably\nbecause they does not support Ephemeral Keys.\n\nESP8266 AXTLS was run using ESP8266 Arduino Board package 2.4.2. The ESP8266\nBearSSL tests were run with package 2.5.2.\n\nThe source code howsmyssl.ino handles all TLS stacks but at the cost of a lot\nof #if conditionals. All cases use root CA certificate authentication. SHA1\nfingerprint authentication is not safe and requires frequent updates.\n\nThe Adafruit Airlift shield (ESP32 running WiFiNINA firmware) works fine on an\nArduino Due. It has the same rating and cipher suites as the MKR WiFi 1010. The\nlimited RAM on Uno and Mega limit the usefulness shield but I can confirm it\nworks on Mega 2560.\n\nThe root CA certificate is included in the source code for the ESP32 and\nESP8266. The root CA certificate for the WiFi1010 (WiFiNINA) and ATWINC1500\n(WiFi101)and must be loaded using the WiFi101/WiFiNINA Firmware/Certificates\nUpdater. The Adafruit Airlift has pre-loaded root certs that work for the\nthree examples.\n\n## Library Dependencies\n\nAll can be installed using the IDE library manager.\n\nArduinoJson, WiFiNINA, WiFi101\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Fhowsmyssl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgdsports%2Fhowsmyssl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgdsports%2Fhowsmyssl/lists"}