-
Notifications
You must be signed in to change notification settings - Fork 43
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
Fails with Let's Encrypt ECDSA certificate chain #58
Comments
Fails with #57 (labeled as 1.7.7 tentatively), and also 1.7.4 and 1.7.5 NINA-FW builds, so it's not a new cert problem. |
@dhalbert the only thing i can suspect about this is that it is some CloudFlare related thing like the size of the headers, http protocol config |
I found out Let's Encrypt has set up test websites that use both of its chains. See https://letsencrypt.org/certificates/, and look under "Root Certificates" for "We've set up websites..." to find them. https://valid-isrgrootx1.letsencrypt.org/ https://valid-isrgrootx2.letsencrypt.org/ The first server works fine, as expected. The second fails in the same way that api.intra.io fails. These servers don't seem to use CloudFlare -- they are straightforwardly configured. So it appears the problem has to do with this particular cert chain, maybe because it is ECDSA. |
I tried the test servers using an Arduino Nano 33 IOT, with its https://github.com/arduino/nina-fw firmware updated to 1.5.0, the latest version. As with our test, https://valid-isrgrootx1.letsencrypt.org/ worked, but https://valid-isrgrootx2.letsencrypt.org/ did not. I was using the
By comparison, with
tagging @ladyada for interest |
@dhalbert I did plan to have a quick look, but got distracted while looking at the linked issues (esp-idf or esp-arduino one) and the minimum test case they asked for... I found both the sites worked with just the esp mbedtls CMN(common) certs included using the x509 example with latest master of esp-idf.
Sorry for the edits and brain-half-dump, needed to rid the thoughts before bed. |
@tyeth Since https://valid-isrgrootx2.letsencrypt.org/ works with regular ESP32 and ESP32-xx, but does not work with either adafruit or arduino NINA-FW, we might look to see if there are some differences in the settings between the |
@dhalbert any updates on this one? |
@crhuber After further testing, I found that arduino NINA-FW does work, when the proper root certificates are included. We think we will rebase our fork of NINA-FW against the latest arduino NINA-FW and add back the features we added. But this work has not been started yet. We forked a long time ago and there have been many changes to arduino NINA-FW since then. Our code changes are relatively minor. |
I have asked about #62 but haven't gotten a reply yet. |
https://api.intra.io/api/v1/healthz, which has a Let's Encrypt cert chain, causes failure. It is Cloudflare based.
The cert chain as reported by Firefox is:
*.intra.io server cert <- Let's Encrypt E1 <- ISRG Root X2 (using elliptic keys)
This contrasts with the working Let's Encrypt chain:
End-entity certificate <- Let's Encrypt R3 intermediate cert <- ISRG Root X1 (special cross-signed version) <- DST Root CA X3
(see adafruit/certificates#1 for background)
The URL above does work on native Espressif wifi, like ESP32-S2.
Turning on debug tracing shows what might be a crash:
The cert chain that doesn't work uses elliptic keys, but those encryption methods seem to be turned on in the
sdkconfig
here.Thanks to @crhuber for reporting this. See #55 (comment) and following.
@tyeth you mentioned two URL's you are using, one with each chain. If you have time, could you verify that one works and one fails, in line with the above?
The text was updated successfully, but these errors were encountered: