-
Notifications
You must be signed in to change notification settings - Fork 37
Description
After #50 lands we should be able to enable the stapled OCSP test in the real world verification test suite:
rustls-platform-verifier/rustls-platform-verifier/src/tests/verification_real_world/mod.rs
Lines 221 to 239 in 65b2a97
| // OCSP stapling works. | |
| // | |
| // XXX: This test is commented-out because it is a time-bomb due to the | |
| // short lifetime of the OCSP responses for the certificate. | |
| // | |
| // TODO: If/when we can validate a certificate for a specific point in time | |
| // during a test, re-enable this and have it test the certificate validity | |
| // at a point in time where the OCSP response is valid. | |
| // | |
| // revoked_badssl_com_stapled => TestCase { | |
| // reference_id: "revoked.badssl.com", | |
| // chain: &[ | |
| // include_bytes!("revoked_badssl_com_1.crt"), | |
| // include_bytes!("revoked_badssl_com_2.crt"), | |
| // ], | |
| // stapled_ocsp: Some(include_bytes!("revoked_badssl_com_1.ocsp")), | |
| // // XXX: We only do OCSP stapling on Windows. | |
| // valid: !cfg!(windows), | |
| // }, |
As described in this comment (which should also be fixed up) this was commented out when it wasn't possible to specify a time to use for verification to avoid flakes from the very short OCSP response validity period.
We know that Webpki doesn't support revocation checking via stapled OCSP (see rustls/webpki#217) so we will need to cfg gate the expected result to only assert a revocation error result for non-Linux/WASM platforms - something like:
revoked_badssl_com_stapled => TestCase {
reference_id: "revoked.badssl.com",
chain: &[
include_bytes!("revoked_badssl_com_1.crt"),
include_bytes!("revoked_badssl_com_2.crt"),
],
stapled_ocsp: Some(include_bytes!("revoked_badssl_com_1.ocsp")),
// Note: the vendored revoked badssl cert and OCSP response expired ~Dec 9 2021,
// so we use a verification time fixed to Dec 4 02:09:01 2021 UTC
verification_time: SystemTime::UNIX_EPOCH + Duration::from_secs(1_638_583_741),
#[cfg(not(any(target_os = "linux", target_arch = "wasm32")))]
expected_result: Err(TlsError::InvalidCertificate(CertificateError::Revoked)),
#[cfg(any(target_os = "linux", target_arch = "wasm32"))]
expected_result: Ok(()), // https://github.com/rustls/webpki/issues/217
other_error: no_error!(),
},However, it appears the Windows verifier is returning Ok(()) where Err(TlsError::InvalidCertificate(CertificateError::Revoked)) is expected. Further investigation is required.