On 20. 6. 25 23:49, Ivan Zhakov wrote:
On Fri, 20 Jun 2025 at 22:51, Branko Čibej <br...@apache.org> wrote:

    On 20. 6. 25 22:41, Ivan Zhakov wrote:
    > On Fri, 20 Jun 2025 at 22:38, Branko Čibej<br...@apache.org> wrote:
    >
    >> On 20. 6. 25 21:43, Ivan Zhakov wrote:
    >>> On Thu, 19 Jun 2025 at 15:56, Graham
    Leggett<minf...@sharp.fm.invalid>
    >>> wrote:
    >>>
    >>>> On 18 Jun 2025, at 22:39, minfrin (via
    GitHub)<g...@apache.org>  wrote:
    >>>>
    >>>>> minfrin opened a new pull request, #8:
    >>>>> URL:https://github.com/apache/serf/pull/8
    >>>>>
    >>>>>     - Add serf_ssl_cert_uri_set(), a callback to set the URL
    of a
    >>>> certificate store.
    >>>>>     - Use the OSSL_STORE API from OpenSSL to read
    certificates and keys.
    >>>> Certs and keys are read from a URL instead of a file path.
    The default
    >> URL
    >>>> scheme is file:.
    >>>>>     - Keep fallback support for the existing
    >>>> serf_ssl_client_cert_provider_set() callback, which reads
    exclusively
    >> from
    >>>> a local PKCS12 file.
    >>>>>     - Support full intermediate certificate handling. Previously
    >> whatever
    >>>> was in the PKCS12 file was blindly passed to the the server
    on the
    >>>> assumption the administrator had pre-done the work
    constructing the
    >>>> certificate chain. Now we make no assumption as to the size
    of the
    >>>> certificate store, if a Windows personal certificate store of
    a MacOS
    >>>> keychain is used, we search for the most appropriate leaf
    certificate
    >> that
    >>>> matches what is requested by the server.
    >>>>>     - Update test cases to handle both URIs and PKCS12 files.
    >>>>>
    >>>>>     Note: tests will fail on modern unix until reference to
    now-removed
    >>>> MD5 is fixed. This test failure is unrelated.
    >>>>
    >>>> Hi Graham,
    >>> I didn't look at the patch yet, but I have general concern:
    serf doesn't
    >>> depend on OpenSSL. E.g. it may use Crypto API on Windows in
    future. So I
    >>> think we should avoid exposing OpenSSL in public serf API. Is
    it possible
    >>> to abstract URI somehow? Maybe some kind of flag?
    >>
    >> Agree with the concept of leaving OpenSSL specifics out of the
    public API.
    >>
    >> Am sceptical about abstracting OpenSSL out of Serf's internals.
    It's a
    >> nice goal to have, sure; for the Windows CryptoAPI as well as macOS
    >> network security layer, or gnutls or LibreSSL (this last works
    out of
    >> the box, but behaves differently from OpenSSL 3 or even 1.1.1).
    I'm sure
    >> "someone" will have the time and motivation to make this small
    change. :D
    >>
    >> I agree that full abstraction of OpenSSL URI is a complex task.
    But I was
    > thinking of something very simple. Like
    > serf_ssl_cert_enable_system_certs(someflags
    > ?).

    Misunderstanding here. It's clearly possible to do this without
    exposing
    the URIs in the public API, and it's what we should do. I agree it's
    unlikely that a user would want to, e.g., request certs from the
    macOS
    Keychain instead of the Windows certificate store while running on
    Windows. Although, who knows what kind of weirdness happens in
    enterprise deployments.

I don't remember MacOS Keychain, but Windows have concept "machine" and "user" certificate store. Probably macOS KeyChain has the same. So maybe it makes sense to expose flags to be able to select "machine", "user" or both certificate stores.

Yes, Mac (and iOS, etc.) are similar in that respect. This sounds like a sensible approach.

-- Brane

Reply via email to