Skip to content

crypto/x509: ParseCRL allows CRL files to have duplicate revoked entries and duplicate certificate serial numbers. #73452

@onepeople158

Description

@onepeople158

Go version

go version go1.24.2 linux/amd64

Output of go env in your module/workspace:

CRL Issuer: CN=My Root CA,OU=My Root CA,O=My Company,L=San Francisco,ST=California,C=US
This Update Time: 2025-01-01 08:00:00 +0800 CST
Next Update Time: 2025-12-01 08:00:00 +0800 CST
Signature Algorithm: SHA256-RSA
Number of Revoked Certificates: 3

Revoked Entry Details:
============================
Serial Number: 1c80022ef81f2405ee96a612dcb61fe0ac701e5e
Revocation Time: 2025-04-17 18:16:51 +0800 CST
  (No extensions)
----------------------------
Serial Number: 8cb8193ecce671ec00000000582c8a7a
Revocation Time: 2025-04-14 20:00:00 +0800 CST
  Extensions:
    2.5.29.21 (CRL Reason): CessationOfOperation
----------------------------
Serial Number: 8cb8193ecce671ec00000000582c8a7a
Revocation Time: 2025-03-14 20:00:00 +0800 CST
  Extensions:
    2.5.29.21 (CRL Reason): KeyCompromise

CRL Issuer: CN=My Root CA,OU=My Root CA,O=My Company,L=San Francisco,ST=California,C=US
This Update Time: 2025-01-01 08:00:00 +0800 CST
Next Update Time: 2025-12-01 08:00:00 +0800 CST
Signature Algorithm: SHA256-RSA
Number of Revoked Certificates: 2

Revoked Entry Details:
============================
Serial Number: 8cb8193ecce671ec00000000582c8a7a
Revocation Time: 2025-04-14 20:00:00 +0800 CST
  Extensions:
    2.5.29.21 (CRL Reason): CessationOfOperation
----------------------------
Serial Number: 8cb8193ecce671ec00000000582c8a7a
Revocation Time: 2025-04-14 20:00:00 +0800 CST
  Extensions:
    2.5.29.21 (CRL Reason): CessationOfOperation
----------------------------

What did you do?

Hello developer, I successfully parsed a CRL file with duplicate revoked certificate entries or duplicate serial numbers using go. According to RFC 5280:

Each revocation entry is uniquely identified by its serial number.

What did you see happen?

I successfully parsed a CRL file with duplicate revoked certificate entries or duplicate serial numbers using go.

What did you expect to see?

crl_revoked_dublicate.zip
crl_revoked_dublicate_serial.zip

Code:

go.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugReportIssues describing a possible bug in the Go implementation.NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions