crypto
crypto copied to clipboard
ocsp: better validate OCSP response's certificates
We make three changes here:
- Allow iterating over all given certificates to find the one that signed this OCSP response, as RFC 6960 does not guarantee an order and some CAs send multiple certificates, and
- Allow the passed issuer to match the certificate that directly signed this response, and
- Lastly, we document the unsafe behavior of calling these functions with issuer=nil, indicating that it performs no trust verification.
Previously, when a CA returned the intermediate CA that signed a leaf cert as an additional cert in the response field (without using a delegated OCSP certificate), Go would err with a bad signature, as it expected the intermediate CA to have signed the wire copy (even though it was the exact same certificate).
Also includes a code comment around the "bad signature on embedded certificate" error message, indicating that this isn't strictly the correct preposition choice.
See also: https://github.com/crtsh/test_websites_monitor/blob/1bd8226b5f963e91d7889ea432a36e3173be8eec/test_websites_monitor.go#L267 See also: https://github.com/golang/go/issues/59641
Fixes golang/go#59641
This PR (HEAD: 4da111cfcc3932f2ffd43f200312a8fb79ed407e) has been imported to Gerrit for code review.
Please visit https://go-review.googlesource.com/c/crypto/+/485055 to see it.
Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info
Message from Alex Scheel:
Patch Set 1:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/485055. After addressing review feedback, remember to publish your drafts!
This PR (HEAD: 7ee4c84b54f11b7125a796724103b8372c86e827) has been imported to Gerrit for code review.
Please visit https://go-review.googlesource.com/c/crypto/+/485055 to see it.
Tip: You can toggle comments from me using the comments slash command (e.g. /comments off)
See the Wiki page for more info
Message from Alex Scheel:
Patch Set 1:
(1 comment)
Please don’t reply on this GitHub thread. Visit golang.org/cl/485055. After addressing review feedback, remember to publish your drafts!