Skip to content

SslStream delayed client certificate with legacy OpenSSL #55761

Closed

Description

@wfurt

#54692 added support for NegotiateClientCertificateAsync on Linux. This seems to work reliably only with OpenSSL 1.1.1 (current LTS) We should investigate the failures on older OpenSSL versions (1.0.0 and 1.1.0) and possibly throw PNSP.

It would be nice to re-test with OpenSSL 3.0 to make sure we did not use anything marked as deprecated or missing in 3.0.

Activity

  1. ghost added
    untriagedNew issue has not been triaged by the area owner
    on Jul 15, 2021
  2. wfurt commented on Jul 15, 2021

    @wfurt
    MemberAuthor

    related to #49346

  3. added
    enhancementProduct code improvement that does NOT require public API changes/additions
    and removed
    untriagedNew issue has not been triaged by the area owner
    on Jul 15, 2021
  4. added this to the 6.0.0 milestone on Jul 15, 2021
  5. karelz commented on Jul 15, 2021

    @karelz
    Member

    Triage: We should add the PNSE and check OpenSSL 3.0 for 6.0 release.
    Then we can move it to Future or decide to close as the legacy OpenSSL versions are being pushed out of distros.

  6. aik-jahoda commented on Jul 27, 2021

    @aik-jahoda
    Contributor

    Tested following configuration:

    • .NET SslStream authenticated as server (on OpenSsl 1.0.0t).
    • OpenSsl s_clients (non-.NET): OpenSSL 1.0.0t, OpenSSL 1.1.1k, OpenSSL 3.0.0-beta1
      The above configuration works as expected.

    If we use SslStream client with OpenSSL 1.0.0/1.1.0, then it fails.
    The SslStream client works only with OpenSSL 1.1.1.

    SslStream authenticated as client is without change, throwing PNSE (when using openssl version smaller than 1.1.1) would

    1. be breaking change
    2. be not nice as the exception would be triggered by server (when requesting certificate) and would depends on server. Instead client shouldn't ignore server HELLO request.
  7. karelz commented on Jul 27, 2021

    @karelz
    Member

    Triage: Given that we didn't throw PNSE in 5.0, but relied on server reaction to unsupported feature (e.g. refused connection, etc.), it is fine to keep it in 6.0 the same way for certain older OpenSSL versions (which are on older distros which in time will be out of support anyway).
    If there is business demand in future, we can reconsider.

    Close

  8. ghost locked as resolved and limited conversation to collaborators on Aug 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area-System.Net.SecurityenhancementProduct code improvement that does NOT require public API changes/additionsos-linuxLinux OS (any supported distro)

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions