Skip to main content

    Code Signing Certificates Must Now Carry a Reserved Policy OID

    From September 15, 2026, every new code signing certificate must carry exactly one CA/Browser Forum reserved policy OID. What ballot CSC-32 changed.

    MS
    My-SSL Team
    ·
    11 min read
    ·
    Published September 15, 2026
    ·
    Last updated September 15, 2026

    The short answer

    As of September 15, 2026, every publicly trusted code signing certificate a certificate authority issues must carry exactly one CA/Browser Forum reserved policy OID in its certificatePolicies extension. The three permitted values are 2.23.140.1.4.1 for a non-EV (OV) code signing certificate, 2.23.140.1.3 for EV, and 2.23.140.1.4.2 for a timestamping certificate. The requirement comes from ballot CSC-32, which produced version 3.11.0 of the Code Signing Baseline Requirements and sits in section 7.1.6.4. It binds the CA at issuance only. Certificates you already hold are untouched, and nothing needs reissuing.

    Where the reserved policy OID sits inside a code signing certificate and which three values are allowedA certificate outline lists its extensions, with the certificatePolicies extension highlighted. An arrow leads to three option boxes: non-EV code signing 2.23.140.1.4.1, EV code signing 2.23.140.1.3, and timestamping 2.23.140.1.4.2. A caption states that exactly one of the three is required in certificates issued on or after September 15, 2026.Inside a code signing certificateX.509 extensionskeyUsageextKeyUsage (codeSigning)certificatePoliciescRLDistributionPointsauthorityInfoAccessholdsExactly one of these threeNon-EV code signing2.23.140.1.4.1EV code signing2.23.140.1.3Timestamping2.23.140.1.4.2Required in certificates issued on or after September 15, 2026CSBR v3.11.0 §7.1.6.4 — the CA may still add its own policy OIDsalongside the reserved one.
    The reserved OID is the one field in the certificate that answers “what kind of code signing certificate is this?” without any knowledge of the issuing CA.

    What ballot CSC-32 actually changed

    Until version 3.11.0, a certificate authority could assert its compliance with the Code Signing Baseline Requirements in either of two ways: by including a CA/Browser Forum reserved policy OID, or by including a policy identifier of its own that it documented in its Certification Practice Statement. CSC-32 inverted that. The reserved OID became mandatory, and the CA’s own identifiers became the optional extra.

    The new text in section 7.1.6.4 is one sentence: “Effective September 15, 2026 a Certificate issued to a Subscriber MUST contain exactly one of the reserved policy OIDs specified in Section 7.1.6.1 in the Certificate’s CertificatePolicies extension.” Everything else in the section survived intact, including the permission for a CA to assert additional identifiers of its own and the obligation to describe them in its CP or CPS.

    The ballot was published on June 16, 2026 and passed without opposition: seven certificate issuers in favour (Actalis, Asseco Data Systems, which operates Certum, DigiCert, GlobalSign, HARICA, IdenTrust and Sectigo), Microsoft in favour on the certificate consumer side, no votes against and no abstentions. A unanimous ballot usually signals a cleanup rather than a fight, and that is roughly what this is. It closes a gap that had been sitting in the document since the Code Signing Baseline Requirements were adopted in 2015.

    How ballot CSC-32 inverted the rule on policy identifiers in code signing certificatesTwo stacked panels. The upper panel, labelled version 3.10.0, shows that a certificate authority could assert compliance using either a CA/Browser Forum reserved OID or its own policy identifier. The lower panel, labelled version 3.11.0, shows the reserved OID as required and the CA-defined identifier as an optional addition.What a CA had to put in the certificatePolicies extensionBefore — CSBR v3.10.0Reserved CA/B Forum OIDORthe CA's own policy identifierA parser could not count on the reserved value being present.After — CSBR v3.11.0, from September 15, 2026Exactly one reserved CA/B Forum OID — requiredPlus any number of CA-defined policy identifiers — optionalThe reserved value is now guaranteed, so it can be relied on.
    The ballot did not add a new field. It removed the escape hatch that let a CA satisfy the requirement with a number only that CA understood.

    Why the gap mattered: if the reserved OID was optional, no piece of software could treat its absence as meaningful. A certificate without 2.23.140.1.3 might be a non-EV certificate, or it might be a perfectly good EV certificate from a CA that had chosen to assert its own OID instead. Any tool that wanted a reliable answer had to maintain a lookup table of per-CA policy numbers and keep it current. From September 15, 2026 the reserved value is guaranteed, so its absence in a new certificate means something definite.

    The three reserved OIDs, and what each means

    Section 7.1.6.1 defines three reserved certificate policy identifiers, and a subscriber certificate must now carry one of them. Two describe code signing certificates at the two validation levels the Requirements recognise, and the third describes a timestamping certificate, which is issued to a timestamp authority rather than to a software publisher.

    OIDCertificate typeWhat it asserts
    2.23.140.1.4.1Non-EV code signing (OV)Issued under the Code Signing Baseline Requirements without meeting the EV validation rules.
    2.23.140.1.3EV code signingIssued under the same Requirements, meeting the extended validation rules for the subject organisation.
    2.23.140.1.4.2TimestampingIssued to a timestamp authority for RFC 3161 timestamping, not for signing software.

    The EV value looks out of place next to the other two, and it is. Read the arcs: 2.23.140.1.4.1 and 2.23.140.1.4.2 both hang off code-signing-requirements(4), while 2.23.140.1.3 hangs directly off the Forum’s certificate-policies(1) arc. That is a fossil from the years when EV code signing had its own separate guidelines document. Ballot CSC-25 folded that document into the Code Signing Baseline Requirements in 2024, but the OID kept the address it was registered at. If you are writing a parser, do not assume the EV value is a sibling of the other two. It is not, and a prefix match on 2.23.140.1.4 will silently miss every EV certificate.

    Why “exactly one” is the phrase that matters

    “Exactly one” applies to the reserved OIDs as a set, not to policy identifiers in general. A compliant certificate carries one, and only one, of the Forum’s three values, and may carry as many CA-defined identifiers alongside it as the CA cares to document. Most short summaries of the ballot collapse this into “one policy OID per certificate”, which is wrong and will break your validation logic if you code to it.

    The two halves of the rule come from two adjacent paragraphs. Section 7.1.6.4 opens with the mandatory single reserved OID, and the very next paragraph says CAs “MAY also assert one or more policy identifier(s), defined by the CA”. So the shape of a compliant certificatePolicies extension is: one reserved value, plus zero or more CA values, in any order.

    What this means if you are writing validation code

    • Iterate the full list of policy OIDs. Do not read the first one and stop. The reserved value is not required to come first.
    • Match on the exact reserved values, not on a prefix. The EV value sits in a different arc.
    • Treat unknown OIDs as CA-defined and ignore them rather than failing. They are explicitly permitted.
    • Apply the check only to certificates issued on or after September 15, 2026. An older certificate may legitimately have no reserved OID at all.

    That last point is the one that catches people. If you add a hard requirement for a reserved OID to a signature verification gate today, every signature made with a certificate bought before this September starts failing, and those certificates are valid for up to 460 days from issuance. A certificate issued in February 2026 can still be signing code well into 2027 with no reserved OID in sight, entirely legitimately.

    Does this affect a certificate you already hold?

    No. Section 7.1.6.4 is an issuance rule, which means it constrains what a certificate authority may hand out from September 15, 2026 onward. It says nothing about certificates already in circulation. Yours keeps its original expiry date, keeps working in every tool that accepted it last week, and does not need to be reissued or replaced.

    Signatures you have already produced are equally unaffected. A timestamped Authenticode signature stays verifiable after the signing certificate expires, and that behaviour is untouched here ; timestamping is governed by section 7.2 and the RFC 3161 mechanics, neither of which CSC-32 went near.

    The change reaches you at renewal, and even then only as a difference in what the new certificate contains. There is no new paperwork, no new validation step, and no new hardware requirement. If you renew a code signing certificate in October 2026, the certificate that comes back will assert 2.23.140.1.4.1 or 2.23.140.1.3 where the one it replaced may not have.

    How to read the policy OID out of a certificate

    Export the public certificate and print its extensions. You do not need the private key, which matters because code signing keys have lived on hardware tokens or in cloud signing services since June 2023 and cannot be exported at all. Both of the commands below read a public certificate file and show the certificatePolicies extension.

    With OpenSSL, on any platform:

    openssl x509 -in codesigning.pem -noout -text

    Look for the block that starts X509v3 Certificate Policies:. Each identifier appears on its own line beginning with Policy:, so an EV certificate from a CA that also asserts its own OID prints two such lines, one of them 2.23.140.1.3.

    On Windows, without installing anything:

    certutil -dump codesigning.cer

    The same extension appears under Certificate Policies, with each policy numbered and its OID printed alongside any CPS qualifier the CA included. You can also reach it through the GUI on a signed file: right-click, Properties, Digital Signatures, select the signature, Details, View Certificate, Details, then scroll to Certificate Policies.

    If you have only a signed binary and no certificate file, pull the certificate out of the signature first. Our walkthrough on verifying a code signature covers the extraction step on both Windows and Linux.

    Who actually has to do something

    Almost nobody who buys certificates. The work in CSC-32 lands entirely on certificate authorities, who had from June 16 to September 15, 2026 to adjust their issuance profiles. For software publishers this is a change you read about rather than act on. The one group that gains something concrete is the people who write code that inspects certificates.

    If you are…What CSC-32 asks of you
    A certificate authorityUpdate issuance profiles so every subscriber certificate carries exactly one reserved OID. This was due by September 15, 2026.
    A developer buying a certificateNothing. Ordering, validation and hardware requirements are unchanged.
    Running a signing gate in CI/CDOptional upgrade. You can now assert the certificate’s validation level from the OID instead of a per-CA lookup table, at least for certificates issued after the cutover.
    Building signature verification toolingIterate all policy OIDs, match exact values, and date-gate the check so pre-September 2026 certificates still pass.

    The CI/CD row is where this quietly becomes useful. A release pipeline that wants to guarantee its artefacts were signed with an EV certificate has, until now, had to hard-code the policy OIDs of whichever CA it buys from and update that list whenever it switches supplier. From the cutover it can check for 2.23.140.1.3 and be done. If you are picking a validation level for a new project, our OV and EV code signing certificates are issued by Certum, whose parent Asseco Data Systems voted for this ballot, so the reserved OID lands in the certificate as described above.

    Where CSC-32 sits in the schedule

    CSC-32 is the third compliance date to hit code signing in three years, and by a distance the mildest. The June 2023 hardware key mandate ended software-only PFX files and forced every buyer onto a token, an HSM or a cloud signing service. The March 2026 validity cut took the maximum certificate lifetime from 39 months to 460 days. This one changes a field inside the certificate.

    Recent compliance dates in the Code Signing Baseline RequirementsA horizontal timeline with three marked dates: June 1, 2023, hardware key protection required for all code signing certificates; March 1, 2026, maximum validity cut to 460 days under ballot CSC-31; and September 15, 2026, a reserved policy OID becomes mandatory under ballot CSC-32, shown as the current step.What the CSBR has changed latelyJun 1, 2023CSC-13 / CSC-17Hardware keysMar 1, 2026CSC-31460-day validitySep 15, 2026CSC-32Reserved policy OIDyou are here
    Two of these three changed what buyers have to do. This one changed what the certificate has to say about itself.

    Grouping them that way is worth doing, because the first two are still generating support tickets and this one will not. If you are planning a renewal cycle, the 460-day limit in section 6.3.2 is the constraint that shapes it, and it is covered in detail in our piece on the 460-day code signing validity limit. CSC-32 changes nothing about your calendar.

    As of September 15, 2026 the current version of the Code Signing Baseline Requirements is 3.11.0, and section 1.2.2 lists 2026-09-15 against section 7.1.6.4 in its table of relevant dates. That table is the fastest way to check whether a compliance date you half-remember is real, and it is worth a bookmark if you track this cluster of rules at all.

    Frequently Asked Questions

    Get instant answers to common questions about SSL certificates and our services.

    Still Have Questions?

    Our SSL experts are available 24/7 to help with any questions about certificates, installation, or technical issues.

    Buying or renewing a code signing certificate

    Nothing in CSC-32 changes what you order or how you are validated, so the things worth comparing are the same ones as last month: validation level, how the key is delivered, and whether the signing flow fits your build pipeline. Our code signing certificate options cover OV and EV from Certum, with cloud signing through SimplySign for teams that cannot pass a physical token around.

    Related reading