Skip to content

Enable stapled OCSP verification test, investigate Windows verifier OCSP staple handlingΒ #51

@cpu

Description

@cpu

After #50 lands we should be able to enable the stapled OCSP test in the real world verification test suite:

// 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions