On 25. 6. 25 01:04, Daniel Sahlberg wrote:
Den fre 20 juni 2025 kl 06:12 skrev Branko Čibej <br...@apache.org>:

    On 19. 6. 25 23:06, Graham Leggett wrote:
    > On 18 Jun 2025, at 17:18, Branko Čibej <br...@apache.org> wrote:
    >
    >>> While adding OpenSSL3 support to serf, I stumbled on a test
    failure
    >>> caused by MD5 having been removed from OpenSSL.
    >>>
    >>> This led to adding a dedicated error message for it, then
    updating
    >>> md5 to sha256 when generating a test CRL, then updating the
    >>> certificate creation script to work with python3, then
    updating the
    >>> test certs.
    >>
    >> Serf already supports OpenSSL3*;
    >
    > Serf can build against OpenSSL3, but exclusively uses PKCS12_parse
    > functionality from OpenSSL v0.9.3 from 25 years ago.
    >
    >
    
https://github.com/apache/serf/blob/8abcc9106aa9ee2f2618584c8c206c830359e6f1/buckets/ssl_buckets.c#L1647
    >
    > When subversion dropped neon support, what was also dropped was all
    > TLS interfaces that supported smartcards, etc, and all error
    handling.
    >
    > In OpenSSL v3, the OSSL_STORE_open_ex() function was introduced:
    >
    > https://docs.openssl.org/3.3/man3/OSSL_STORE_open/#copyright
    >
    > This interface takes certificate stores described by URIs,
    rather than
    > certificate stores reachable by a filesystem path. Examples of URIs
    > are file: (existing functionality), pkcs11: (smartcards), tpm2:
    > (TPMs), cng: (Windows native certificate store), etc.
    >
    > This interface since OpenSSL3 also supports callbacks so you can
    use
    > passphrases - that is what made it useful.
    >
    > When I say "add OpenSSL3 support", I mean "use OpenSSL3
    > functionality", not "compile against".
    >
    >> I use it to build trunk and I don't see this issue when I run the
    >> tests. Where is this coming from?
    >
    > Modern Redhat and derivatives have for better or worse physically
    > removed old algorithms like MD5 and SHA1. They've also physically
    > removed support for python2.
    >
    > This creates some awesome pain.
    >
    > Export a PKCS12 file from keychain on a 2025 Mac and copy it to a
    > Redhat derived VM and it uses an obsolete RC2-40-CBC cipher. But
    there
    > is no way to know that, because the error that the signature isn't
    > recognised is thrown away and replaced with "An error has occurred".
    >
    >
    
https://msicc.net/exporting-apple-distribution-certificates-for-cicd-the-right-way/#:~:text=for%20security%20reasons.-,When%20Did%20This%20Break?,cert%20with%20a%20supported%20cipher.
    >
    > The test suite in serf runs, and fails, because in 2021 a CRL was
    > generated containing an MD5 signature, and because MD5 has been
    > removed from OpenSSL on Redhat, and because all errors are
    thrown away
    > the reason logged by the test is "An error has occurred".
    >
    > Redhat users need to be able to use subversion without needing gdb
    > skills, and that's why I'm here. This doesn't work for Windows
    users
    > either, probably for the same reason.

    Subversion has some support for verifying server certificates from
    the
    cert store, but AFAIK not for client certificates. So this is another
    good thing.

    Thanks for the explanation. I wasn't aware that RedHat-derived
    systems
    had a patched OpenSSL distro. This all makes perfect sense.

    -- Brane


Thanks Graham for the PR. I've spent some time trying to understand the issue and verify the changes. I've committed the patch in three separate parts, the Python3 changes previously, the new flag and  the sha256-signed certificates tonight.

This resolves one failing test on Fedora42.

I'm getting errors in test_ssl_ocsp_verify_response* (five tests in total) on F42, both before and after the patch, it seems this was already a problem in 2022: https://lists.apache.org/thread/371khw4xrz8c147vspwj4fhf50b8zy2y


I thought I fixed one of those recently? May not have caught them all. Only the no-signer test no longer works with OpenSSL 3, the others should, or at least they do for me locally.

(Of course that test still works with LibreSSL, but that's to be ... expected.)

-- Brane

Reply via email to