We have a specific TLS-validation question that the SSL Application Note V1.2 does not address explicitly, and we would appreciate authoritative clarification.
Setup
-
EC200U-CN, firmware
EC200UCNAAR03A03M08 -
Customer-uploaded CA via
AT+QFUPL="UFS:cacert_<hash>.pem", ... -
AT+QSSLCFG="cacert",1,"UFS:cacert_<hash>.pem"to bind the uploaded CA to SSL context 1 -
AT+QSSLCFG="seclevel",1,1for server-only authentication -
AT+QSSLCFG="sslversion",1,3(TLS 1.2) -
AT+QSSLCFG="ciphersuite",1,0XFFFF -
Following parameters explicitly set to strict values:
ignorecertitem=0,ignoreinvalidcertsign=0,ignoremulticertchainverify=0,sni=1 -
AT+QMTCFG="ssl",1,1,1thenAT+QMTOPEN=1,"<broker>",8883
Observations from our bench testing
-
Connecting to
broker.hivemq.com:8883(a public broker whose server certificate chains to Amazon Root CA 1) succeeds even when we deliberately upload a wrong CA — ISRG Root X1 (Let’s Encrypt’s root, which does not appear anywhere in HiveMQ’s certificate chain).+QMTOPEN: 1,0and+QMTCONN: 1,0,0complete normally, the broker accepts our CONNECT, publishes succeed. The behaviour is identical whether the strict knobs are set or not. -
Connecting to a private TLS broker (Mosquitto behind an ngrok TCP tunnel, with a server certificate chained to a throwaway CA generated on our laptop that exists in no public trust store) fails deterministically with
+QMTOPEN: 1,4even when we upload that throwaway CA to the modem. The same broker accepts plain TCP from the modem (with TLS disabled, we observe+QMTOPEN: 1,0), confirming the underlying carrier/DNS/TCP path is healthy. The TLS handshake itself never reaches our broker side. -
From a normal desktop TLS client (
openssl s_client) using the same throwaway CA as the trust anchor, the handshake to the same broker through the same tunnel succeeds andVerify return code: 0 (ok). So the certificate chain itself is valid; the modem is rejecting it where a spec-compliant client accepts it.
Question
Does the EC200U-CN firmware ship with a built-in / pre-loaded CA trust store of well-known public root CAs that supplements (or overrides) the user-uploaded CA referenced via AT+QSSLCFG="cacert"?
In particular:
-
When
seclevel=1, does the modem validate the server certificate ONLY against the uploaded CA, OR against the union of (uploaded CA, built-in trust store)? -
Are self-signed root CAs uploaded by the user accepted as valid trust anchors? If not, what additional requirement must they meet (key size, extension flags, signature algorithm, etc.)?
-
Is there a documented difference between the EC200U “CN” (China) variant and other regional variants on TLS trust-anchor behaviour?
-
Is there a way to disable the built-in trust store (if it exists) so that only the uploaded CA is used — for customers running their own private CA infrastructure?
We want to document accurate TLS behaviour in our product specification so customers with private brokers and private CAs can deploy with confidence (or know in advance that this configuration is unsupported by the EC200U).