From 127e4fb7a86604e66639afe54ba9912ba5e507d9 Mon Sep 17 00:00:00 2001 From: Scott Miller Date: Fri, 4 Oct 2024 18:59:40 +0000 Subject: [PATCH] backport of commit bae00721d2a07299f50cdbaf3dc5348d26cc92a3 --- changelog/28597.txt | 3 +++ sdk/helper/ocsp/client.go | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 changelog/28597.txt diff --git a/changelog/28597.txt b/changelog/28597.txt new file mode 100644 index 000000000000..774c200f1adc --- /dev/null +++ b/changelog/28597.txt @@ -0,0 +1,3 @@ +```release-note:bug +auth/cert: When using ocsp_ca_certificates, an error was produced though extra certs validation succeeded. +``` diff --git a/sdk/helper/ocsp/client.go b/sdk/helper/ocsp/client.go index 888d2025176b..71f75f168a4a 100644 --- a/sdk/helper/ocsp/client.go +++ b/sdk/helper/ocsp/client.go @@ -495,15 +495,19 @@ func validateOCSPParsedResponse(ocspRes *ocsp.Response, subject, issuer *x509.Ce var matchedCA *x509.Certificate // Assumption 1 failed, try 2 - if err := ocspRes.Certificate.CheckSignatureFrom(issuer); err != nil { - // Assumption 2 failed, try 3 - overallErr = multierror.Append(overallErr, err) - - m, err := verifySignature(ocspRes, extraCas) - if err != nil { - overallErr = multierror.Append(overallErr, err) + if sigFromIssuerErr := ocspRes.Certificate.CheckSignatureFrom(issuer); sigFromIssuerErr != nil { + if len(extraCas) > 0 { + // Assumption 2 failed, try 3 + m, err := verifySignature(ocspRes, extraCas) + if err != nil { + overallErr = multierror.Append(overallErr, sigFromIssuerErr) + overallErr = multierror.Append(overallErr, err) + } else { + overallErr = nil + matchedCA = m + } } else { - matchedCA = m + overallErr = multierror.Append(overallErr, sigFromIssuerErr) } } else { matchedCA = ocspRes.Certificate