-
Notifications
You must be signed in to change notification settings - Fork 32
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.