Bug#1142349: ca-certificates: certdata2pem.py drops S/MIME-trusted-but-TLS-distrusted CAs, breaking S/MIME verification for chains Mozilla still trusts
David Woodhouse <[email protected]> Sat, 18 Jul 2026 11:10:01 +0100
| Newsgroups | gmane.linux.debian.devel.security |
|---|---|
| Message-ID | <830c20d69c7c86373988f5a016de48971d951ab1.camel__3886.86374515004$1784369626$gmane$org@infradead.org> |
--=-aqtQyfU6MZcfYj0lqQ3w Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Package: ca-certificates Version: 20260601~24.04.1 Severity: important Tags: upstream X-Debbugs-CC: [email protected] Summary =3D=3D=3D=3D=3D=3D=3D mozilla/certdata2pem.py inspects only CKA_TRUST_SERVER_AUTH when deciding whether to emit a root as a .crt file. Any root Mozilla marks as CKT_NSS_MUST_VERIFY_TRUST for TLS is silently dropped from the ca-certificates output, even if Mozilla still marks it as CKT_NSS_TRUSTED_DELEGATOR for CKA_TRUST_EMAIL_PROTECTION or CKA_TRUST_CODE_SIGNING. Mozilla now uses this asymmetric trust state as its standard mechanism for the *gradual retirement* of legacy roots (TLS distrusted first, S/MIME and code-signing retained for a further period). Debian's converter collapses that graceful retirement into a total removal, silently breaking S/MIME verification for cert chains that Mozilla explicitly still trusts. Reproducer =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Trust state Mozilla actually shipped for "DigiCert Assured ID Root CA" in the NSS bundle imported by 20260601 (from the source tarball, mozilla/certdata.txt): # Trust for "DigiCert Assured ID Root CA" CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST <-- TLS d= istrusted CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR <-- S/MIM= E still trusted CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST Post-build state on the installed system: $ ls /usr/share/ca-certificates/mozilla/ | grep DigiCert_Assured_ID DigiCert_Assured_ID_Root_G2.crt DigiCert_Assured_ID_Root_G3.crt # G1 file removed entirely $ grep Assured_ID_Root_CA /etc/ca-certificates.conf !mozilla/DigiCert_Assured_ID_Root_CA.crt # explicitly disabled $ grep -c "CN =3D DigiCert Assured ID Root CA$" /etc/ssl/certs/ca-certifi= cates.crt 0 # absent from system trust bun= dle Root cause is in mozilla/certdata2pem.py, lines 108-118 of 20260601~24.04.1: elif obj['CKA_TRUST_SERVER_AUTH'] =3D=3D 'CKT_NSS_TRUSTED_DELEGATOR': trust[obj['CKA_LABEL']] =3D True # emit elif obj['CKA_TRUST_SERVER_AUTH'] =3D=3D 'CKT_NSS_NOT_TRUSTED': print("UNTRUSTED BUT NOT BLACKLISTED CERTIFICATE FOUND: %s" % ...) else: print("Ignoring certificate %s. SAUTH=3D%s, EPROT=3D%s" % \ (obj['CKA_LABEL'], obj['CKA_TRUST_SERVER_AUTH'], obj['CKA_TRUST_EMAIL_PROTECTION'])) # silently drop= ped The else branch even echoes EPROT to stderr, showing awareness of the email trust value -- but never acts on it. Any root Mozilla marks CKT_NSS_MUST_VERIFY_TRUST for TLS is discarded regardless of its email or code-signing trust state. End-user impact reproduced: $ openssl verify -purpose smimesign -CApath /etc/ssl/certs \ -untrusted verokey_intermediate.pem verokey_leaf.pem C =3D AU, O =3D Verokey, CN =3D Verokey Secure Email G2 error 20 at 1 depth lookup: unable to get local issuer certificate error verokey_leaf.pem: verification failed $ openssl verify -purpose smimesign \ -CAfile digicert_assured_id_root_ca.pem \ -untrusted verokey_intermediate.pem verokey_leaf.pem verokey_leaf.pem: OK Impact =3D=3D=3D=3D=3D=3D In the 20260601 upload alone, this affects at least the three DigiCert G1 roots that the debian/changelog claims were "removed": - DigiCert Assured ID Root CA - DigiCert Global Root CA - DigiCert High Assurance EV Root CA Per DigiCert's public advisory <https://knowledge.digicert.com/general-information/digicert-root-and-inter= mediate-ca-certificate-updates-2023> these roots were distrusted by Mozilla and Google Chrome for TLS on 15 April 2026, but Mozilla is not scheduled to distrust them for S/MIME until 15 April 2029. The changelog wording ("removed") is misleading: Mozilla did not remove them; it downgraded TLS trust while retaining S/MIME trust. Debian silently converts that to a full removal. This will keep recurring. Every future graceful CA retirement by Mozilla (which is now the standard pattern under the CA/Browser Forum S/MIME Baseline Requirements) will hit the same converter defect. Downstream Ubuntu is affected identically; the same 20260601~24.04.1 upload has landed as a noble-security update and the extracted trust bundle is byte-for-byte the result of running this script. LP: #2156786 references this batch on the Ubuntu side. The user-visible effects on a Debian/Ubuntu system: - openssl / gnutls / anything reading /etc/ssl/certs/ca-certificates.crt: cannot validate S/MIME signatures issued under these roots. - p11-kit-trust (fed by /usr/share/ca-certificates/trust-source/): same -- the root is gone from its input. - Applications that use the libnssckbi.so shipped by libnss3 directly (Thunderbird embeds its own copy; some Evolution / camel-smime configurations): behaviour depends on the libnss3 build path and whether the application resolves the "Mozilla Root Certs" module to the real Mozilla builtins or to p11-kit-trust. Suggested fixes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Not the simplest change: 1. Preserve trust distinctions in the output. p11-kit-trust's native trust-source/ format can encode per-purpose trust flags in .p11-kit anchor files. Emit these instead of / in addition to the flat .crt extract when a root has asymmetric trust (see p11-kit's pem-directory-hash extractor and trust extract --purpose=3D selectors). This is the "correct" fix and matches what Fedora / RHEL do. 2. At minimum, emit the .crt file into /usr/share/ca-certificates/mozilla/ unconditionally, but keep it commented out in /etc/ca-certificates.conf unless *any* trust purpose is TRUSTED_DELEGATOR. That preserves the raw material for downstream consumers (Thunderbird, NSS-based apps) without adding it to the flat TLS bundle. The current behaviour deletes the source .crt file too, leaving nowhere to recover from. 3. Emit a separate email trust bundle -- e.g. /etc/ssl/certs/email-trust.crt -- for consumers that want S/MIME-only anchors distinct from TLS. --=-aqtQyfU6MZcfYj0lqQ3w Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCD9Aw ggSOMIIDdqADAgECAhAOmiw0ECVD4cWj5DqVrT9PMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYT AlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAi BgNVBAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0yNDAxMzAwMDAwMDBaFw0zMTEx MDkyMzU5NTlaMEExCzAJBgNVBAYTAkFVMRAwDgYDVQQKEwdWZXJva2V5MSAwHgYDVQQDExdWZXJv a2V5IFNlY3VyZSBFbWFpbCBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMjvgLKj jfhCFqxYyRiW8g3cNFAvltDbK5AzcOaR7yVzVGadr4YcCVxjKrEJOgi7WEOH8rUgCNB5cTD8N/Et GfZI+LGqSv0YtNa54T9D1AWJy08ZKkWvfGGIXN9UFAPMJ6OLLH/UUEgFa+7KlrEvMUupDFGnnR06 aDJAwtycb8yXtILj+TvfhLFhafxroXrflspavejQkEiHjNjtHnwbZ+o43g0/yxjwnarGI3kgcak7 nnI9/8Lqpq79tLHYwLajotwLiGTB71AGN5xK+tzB+D4eN9lXayrjcszgbOv2ZCgzExQUAIt98mre 8EggKs9mwtEuKAhYBIP/0K6WsoMnQCcCAwEAAaOCAVwwggFYMBIGA1UdEwEB/wQIMAYBAf8CAQAw HQYDVR0OBBYEFIlICOogTndrhuWByNfhjWSEf/xwMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6en IZ3zbcgPMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIweQYI KwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYB BQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RD QS5jcnQwRQYDVR0fBD4wPDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0 QXNzdXJlZElEUm9vdENBLmNybDARBgNVHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQELBQADggEB ACiagCqvNVxOfSd0uYfJMiZsOEBXAKIR/kpqRp2YCfrP4Tz7fJogYN4fxNAw7iy/bPZcvpVCfe/H /CCcp3alXL0I8M/rnEnRlv8ItY4MEF+2T/MkdXI3u1vHy3ua8SxBM8eT9LBQokHZxGUX51cE0kwa uEOZ+PonVIOnMjuLp29kcNOVnzf8DGKiek+cT51FvGRjV6LbaxXOm2P47/aiaXrDD5O0RF5SiPo6 xD1/ClkCETyyEAE5LRJlXtx288R598koyFcwCSXijeVcRvBB1cNOLEbg7RMSw1AGq14fNe2cH1HG W7xyduY/ydQt6gv5r21mDOQ5SaZSWC/ZRfLDuEYwggWbMIIEg6ADAgECAhAH5JEPagNRXYDiRPdl c1vgMA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAkFVMRAwDgYDVQQKEwdWZXJva2V5MSAwHgYD VQQDExdWZXJva2V5IFNlY3VyZSBFbWFpbCBHMjAeFw0yNDEyMzAwMDAwMDBaFw0yODAxMDQyMzU5 NTlaMB4xHDAaBgNVBAMME2R3bXcyQGluZnJhZGVhZC5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDali7HveR1thexYXx/W7oMk/3Wpyppl62zJ8+RmTQH4yZeYAS/SRV6zmfXlXaZ sNOE6emg8WXLRS6BA70liot+u0O0oPnIvnx+CsMH0PD4tCKSCsdp+XphIJ2zkC9S7/yHDYnqegqt w4smkqUqf0WX/ggH1Dckh0vHlpoS1OoxqUg+ocU6WCsnuz5q5rzFsHxhD1qGpgFdZEk2/c//ZvUN i12vPWipk8TcJwHw9zoZ/ZrVNybpMCC0THsJ/UEVyuyszPtNYeYZAhOJ41vav1RhZJzYan4a1gU0 kKBPQklcpQEhq48woEu15isvwWh9/+5jjh0L+YNaN0I//nHSp6U9COUG9Z0cvnO8FM6PTqsnSbcc 0j+GchwOHRC7aP2t5v2stVx3KbptaYEzi4MQHxm/0+HQpMEVLLUiizJqS4PWPU6zfQTOMZ9uLQRR ci+c5xhtMEBszlQDOvEQcyEG+hc++fH47K+MmZz21bFNfoBxLP6bjR6xtPXtREF5lLXxp+CJ6KKS blPKeVRg/UtyJHeFKAZXO8Zeco7TZUMVHmK0ZZ1EpnZbnAhKE19Z+FJrQPQrlR0gO3lBzuyPPArV hvWxjlO7S4DmaEhLzarWi/ze7EGwWSuI2eEa/8zU0INUsGI4ywe7vepQz7IqaAovAX0d+f1YjbmC VsAwjhLmveFjNwIDAQABo4IBsDCCAawwHwYDVR0jBBgwFoAUiUgI6iBOd2uG5YHI1+GNZIR//HAw HQYDVR0OBBYEFFxiGptwbOfWOtMk5loHw7uqWUOnMDAGA1UdEQQpMCeBE2R3bXcyQGluZnJhZGVh ZC5vcmeBEGRhdmlkQHdvb2Rob3Uuc2UwFAYDVR0gBA0wCzAJBgdngQwBBQEBMA4GA1UdDwEB/wQE AwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwewYDVR0fBHQwcjA3oDWgM4YxaHR0 cDovL2NybDMuZGlnaWNlcnQuY29tL1Zlcm9rZXlTZWN1cmVFbWFpbEcyLmNybDA3oDWgM4YxaHR0 cDovL2NybDQuZGlnaWNlcnQuY29tL1Zlcm9rZXlTZWN1cmVFbWFpbEcyLmNybDB2BggrBgEFBQcB AQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0 aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL1Zlcm9rZXlTZWN1cmVFbWFpbEcyLmNydDANBgkq hkiG9w0BAQsFAAOCAQEAQXc4FPiPLRnTDvmOABEzkIumojfZAe5SlnuQoeFUfi+LsWCKiB8Uextv iBAvboKhLuN6eG/NC6WOzOCppn4mkQxRkOdLNThwMHW0d19jrZFEKtEG/epZ/hw/DdScTuZ2m7im 8ppItAT6GXD3aPhXkXnJpC/zTs85uNSQR64cEcBFjjoQDuSsTeJ5DAWf8EMyhMuD8pcbqx5kRvyt JPsWBQzv1Dsdv2LDPLNd/JUKhHSgr7nbUr4+aAP2PHTXGcEBh8lTeYea9p4d5k969pe0OHYMV5aL xERqTagmSetuIwolkAuBCzA9vulg8Y49Nz2zrpUGfKGOD0FMqenYxdJHgDCCBZswggSDoAMCAQIC EAfkkQ9qA1FdgOJE92VzW+AwDQYJKoZIhvcNAQELBQAwQTELMAkGA1UEBhMCQVUxEDAOBgNVBAoT B1Zlcm9rZXkxIDAeBgNVBAMTF1Zlcm9rZXkgU2VjdXJlIEVtYWlsIEcyMB4XDTI0MTIzMDAwMDAw MFoXDTI4MDEwNDIzNTk1OVowHjEcMBoGA1UEAwwTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBANqWLse95HW2F7FhfH9bugyT/danKmmXrbMnz5GZNAfj Jl5gBL9JFXrOZ9eVdpmw04Tp6aDxZctFLoEDvSWKi367Q7Sg+ci+fH4KwwfQ8Pi0IpIKx2n5emEg nbOQL1Lv/IcNiep6Cq3DiyaSpSp/RZf+CAfUNySHS8eWmhLU6jGpSD6hxTpYKye7PmrmvMWwfGEP WoamAV1kSTb9z/9m9Q2LXa89aKmTxNwnAfD3Ohn9mtU3JukwILRMewn9QRXK7KzM+01h5hkCE4nj W9q/VGFknNhqfhrWBTSQoE9CSVylASGrjzCgS7XmKy/BaH3/7mOOHQv5g1o3Qj/+cdKnpT0I5Qb1 nRy+c7wUzo9OqydJtxzSP4ZyHA4dELto/a3m/ay1XHcpum1pgTOLgxAfGb/T4dCkwRUstSKLMmpL g9Y9TrN9BM4xn24tBFFyL5znGG0wQGzOVAM68RBzIQb6Fz758fjsr4yZnPbVsU1+gHEs/puNHrG0 9e1EQXmUtfGn4InoopJuU8p5VGD9S3Ikd4UoBlc7xl5yjtNlQxUeYrRlnUSmdlucCEoTX1n4UmtA 9CuVHSA7eUHO7I88CtWG9bGOU7tLgOZoSEvNqtaL/N7sQbBZK4jZ4Rr/zNTQg1SwYjjLB7u96lDP sipoCi8BfR35/ViNuYJWwDCOEua94WM3AgMBAAGjggGwMIIBrDAfBgNVHSMEGDAWgBSJSAjqIE53 a4blgcjX4Y1khH/8cDAdBgNVHQ4EFgQUXGIam3Bs59Y60yTmWgfDu6pZQ6cwMAYDVR0RBCkwJ4ET ZHdtdzJAaW5mcmFkZWFkLm9yZ4EQZGF2aWRAd29vZGhvdS5zZTAUBgNVHSAEDTALMAkGB2eBDAEF AQEwDgYDVR0PAQH/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDB7BgNVHR8E dDByMDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vVmVyb2tleVNlY3VyZUVtYWlsRzIu Y3JsMDegNaAzhjFodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vVmVyb2tleVNlY3VyZUVtYWlsRzIu Y3JsMHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t MEAGCCsGAQUFBzAChjRodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vVmVyb2tleVNlY3VyZUVt YWlsRzIuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQBBdzgU+I8tGdMO+Y4AETOQi6aiN9kB7lKWe5Ch 4VR+L4uxYIqIHxR7G2+IEC9ugqEu43p4b80LpY7M4KmmfiaRDFGQ50s1OHAwdbR3X2OtkUQq0Qb9 6ln+HD8N1JxO5nabuKbymki0BPoZcPdo+FeRecmkL/NOzzm41JBHrhwRwEWOOhAO5KxN4nkMBZ/w QzKEy4PylxurHmRG/K0k+xYFDO/UOx2/YsM8s138lQqEdKCvudtSvj5oA/Y8dNcZwQGHyVN5h5r2 nh3mT3r2l7Q4dgxXlovERGpNqCZJ624jCiWQC4ELMD2+6WDxjj03PbOulQZ8oY4PQUyp6djF0keA MYIDuzCCA7cCAQEwVTBBMQswCQYDVQQGEwJBVTEQMA4GA1UEChMHVmVyb2tleTEgMB4GA1UEAxMX VmVyb2tleSBTZWN1cmUgRW1haWwgRzICEAfkkQ9qA1FdgOJE92VzW+AwDQYJYIZIAWUDBAIBBQCg ggE3MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI2MDcxODEwMTAw MVowLwYJKoZIhvcNAQkEMSIEIFE8CrgTj99TunNVY/VRqgjZ7Thryi60zkrxE+b8R/LpMGQGCSsG AQQBgjcQBDFXMFUwQTELMAkGA1UEBhMCQVUxEDAOBgNVBAoTB1Zlcm9rZXkxIDAeBgNVBAMTF1Zl cm9rZXkgU2VjdXJlIEVtYWlsIEcyAhAH5JEPagNRXYDiRPdlc1vgMGYGCyqGSIb3DQEJEAILMVeg VTBBMQswCQYDVQQGEwJBVTEQMA4GA1UEChMHVmVyb2tleTEgMB4GA1UEAxMXVmVyb2tleSBTZWN1 cmUgRW1haWwgRzICEAfkkQ9qA1FdgOJE92VzW+AwDQYJKoZIhvcNAQEBBQAEggIAsb2qM95hvL6/ /y6/LuCJazTSFMM66gJ6C36PagjxBMVTkiUA69s4FhwZ0cFrbmKIbsNRdw8xKVuVKRahGyYmYN7w 2yxa5AVVU4Za9c46CbNMSP87+YFOZtZD/fuUp0xeM6EIzyLX/odB8Vsrc3pw6cLB9BC5VAWhR3ot cSoZUXFlJ/q7jslqBbuBOkfXOEfzDG0Q9OecydL/ezxUbkgmnLDUQfprqdkZxAQA0RcX6XFegmNp 4jUqnIQsOhC62gYqhiLDspvcrrWuyOeKsR9rSaRXAJIH9hfthcCf6Z/Zym1sNp7o7pDGItfNzUmK kfFaDyXq0vD1jMXMrMsxSLaRH6SSiIsKIRGyo8DznIBzhKSDWTbZwSZGGWkdgewTmpcfJbJPH69y 6sChAMAeyi78J+U0u4HfATrkIN0ydyZvxWMKcXNx6YyAhAWSw/4KmXRa7OUgSwr+LW2e34Ov1viO n0qF0TflRFakt9nsSR1IE4LJg/FJUN48kaeJKDHVXxbybiQZWCatTHSOtLsJWOoXA1sgrnh6isTI DzBlHYsvfrqTJBV9GzA7jGdScjqbCBQHDrxR+XQU/bVyhxDsTrwWrdQQsic2qhFDvvcWOKcpzVTg bEQGtSBDIEx6nZ+M+Si5+L7n4XbOFhTYtsDrpmabfGqcfXorftyYGDK3MAaqqp8AAAAAAAA= --=-aqtQyfU6MZcfYj0lqQ3w--