fix(mqtt): trust GTS WE1 for eastmesh/meshmapper broker TLS

mqtt2.eastmesh.au switched from a Let's Encrypt cert to a Google Trust
Services WE1-issued *.eastmesh.au wildcard (July 2026), so devices on the
pinned-PEM fallback path failed the handshake with mbedTLS -9984. Pin the
combined ISRG Root X1 + GTS WE1 bundle for these brokers so either chain
verifies.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jared DohrmanandClaude Fable 5 committed 2026-07-19 13:06:46 +10:00
1 parent 54a167f60f
commit 1fb9737f95
2 files changed
+5 -2

No files matched your search

+2 -1
View File
@@ -2,7 +2,8 @@
namespace mqtt_ca_certs {
// EastMesh currently presents a Let's Encrypt E7-issued certificate.
// EastMesh presented a Let's Encrypt E7-issued certificate until July 2026,
// when it moved to a Google Trust Services WE1 wildcard (see kCombinedPem).
static const char kEastmeshIsrgRootX1Pem[] =
R"PEM(-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+3 -1
View File
@@ -202,7 +202,9 @@ const char* MQTTUplink::brokerCaCert(const BrokerSpec& spec) {
// Note: ESP32 targets with the certificate bundle attach it instead of these PEMs;
// this fallback only applies on builds without CONFIG_MBEDTLS_CERTIFICATE_BUNDLE.
if (spec.bit == kEastmeshBit || spec.bit == kMeshmapperBit) {
return mqtt_ca_certs::kEastmeshIsrgRootX1Pem; // Let's Encrypt ISRG Root X1
// eastmesh.au switched from Let's Encrypt to a Google Trust Services WE1
// wildcard cert (July 2026); trust both so a switch back doesn't brick uplinks.
return mqtt_ca_certs::kCombinedPem; // ISRG Root X1 + GTS WE1
}
// waev (mqtt.waev.app) presents a Google Trust Services WE1 chain, same issuer as LetsMesh.
return mqtt_ca_certs::kLetsmeshWe1Pem; // Google Trust Services WE1