Fix match logic

This commit is contained in:
Fang-Pen Lin
2025-11-11 12:14:48 -08:00
parent 204bf59b22
commit d70fa8f406

View File

@@ -680,15 +680,16 @@ export const pkiAcmeServiceFactory = ({
tx
))!;
const csrIdentifierValues = new Set(
orderWithAuthorizations.authorizations
.map((auth) => auth.identifierValue.toLowerCase())
(certificateRequest.subjectAlternativeNames ?? [])
.map((san) => san.value.toLowerCase())
.concat([certificateRequest.commonName!.toLowerCase()])
);
const expectedIdentifierValues = new Set(
orderWithAuthorizations.authorizations.map((auth) => auth.identifierValue.toLowerCase())
);
if (
csrIdentifierValues.size !== orderWithAuthorizations.authorizations.length ||
!orderWithAuthorizations.authorizations.every((auth) =>
csrIdentifierValues.has(auth.identifierValue.toLowerCase())
)
csrIdentifierValues.size != expectedIdentifierValues.size ||
!csrIdentifierValues.isSubsetOf(expectedIdentifierValues)
) {
throw new AcmeBadCSRError({ detail: "Invalid CSR: Common name + SANs mismatch with order identifiers" });
}