[RADIATOR] OCSP validation
Heikki Vatiainen
hvn at open.com.au
Wed Aug 16 15:16:26 UTC 2023
On 16.8.2023 13.31, Stefan Paetow (OpenSource) via radiator wrote:
> 036004: DEBUG: ServerRADSEC (EDUROAM_RADSEC) TLS OCSP response
> verification
> '3045300906052b0e03021a05000414e0edac4bf41cfcbce33a156b554e92fac28f0c5c0414d2f223bd4aa17fcfa05884ebfce65b08b3cdb4e4020c2427658a363cc6c6452df2e2' failed: 0
> I've redacted the source IP and the subject. I look at the 'response
> verification' line (036004) where the result code is 0, which usually
> means it was successful.
Net::SSLeay::OCSP_response_verify() returns 0 for failure, which was
correctly noticed by Radiator.
https://github.com/radiator-software/p5-net-ssleay/blob/master/lib/Net/SSLeay.pod#L515C1-L523
> And yeah, like you say, you use APIs, and I considered whether adding
> the CA certificate into the trusted store on the machine would make a
> difference, but it doesn't appear so. Is there possibly an assumption
> within Net::SSLeay that if you don't specify a certificate somehow to
> verify the response with that the trusted store is used? :-/
Looking at Net::SSLeay, there are comments and code that attempt to set
up store for verification:
https://github.com/radiator-software/p5-net-ssleay/blob/master/SSLeay.xs#L7739-L7753
The respective Changelog entry is:
https://github.com/radiator-software/p5-net-ssleay/blob/master/Changes#L1112
> I will note though that the response does not include a nonce (if the
> request contains one), although that's not a requirement... This is the
> case when I use 'openssl verify', so I assume the same applies to the API.
Net::SSLeay::OCSP_response_verify() doesn't require nonce. Only if
there's an incorrect nonce, then it will trigger a failure.
The OCSP responder ( http://ocsp.edupki.org/OCSP-Server/OCSP )
certificate is signed by this root CA:
https://www.edupki.org/fileadmin/Documents/edupki-root-ca-cert.txt
If I add this CA to TLS_CAFile, then the OCSP response verification
succeeds. I tested this by forcing the verification to use the request
shown in your log.
However, I'm not sure if this is the right approach if you otherwise
don't want to trust that CA for RadSec connections. I haven't touched
the OCSP functionality in Net::SSLeay and it's unclear for me, for
example, if it's permissible to use different CAs for OCSP response
verification. That is, different CAs than what the verified certificates
use.
If you append edupki-root-ca-cert.txt to the file pointed by TLS_CAFile,
does it work then? And if it does, is this an acceptable CA certificate?
Since 'TLS_CAFile %D/cert/roaming-eduPKI-CA.crt' didn't work for you,
it's a different root CA?
I guess the main question is that how the trust chains are supposed to be.
--
Heikki Vatiainen
OSC, makers of Radiator
Visit radiatorsoftware.com for Radiator AAA server software
More information about the radiator
mailing list