Skip to content

[Feature request] Dockerfile - Include openssl1.1-compat #2314

Closed

Description

@polarathene

Extracted from https://github.com/drwetter/testssl.sh/pull/2305 (specifically this commit)

Which version are you referring to
Both releases: 3.0.x + 3.1dev

Please check this repo whether this is a known feature request
This is for the recent upgrade to Alpine 3.17 where OpenSSL package is now the 3.x series, instead of the previous 1.1 series.

If your feature request otherwise is related to a usage problem, please describe it

  • It was observed to be about 30 seconds faster (~190 sec vs ~220 sec). About a 15% improvement in run time.
  • There may be other reasons to carry both versions of OpenSSL packages in the image, at least until the 3.x series is more broadly available (Debian Bullseye for example deploys with 1.1).

Describe the solution you'd like

  • Adding the openssl1.1-compat package (adds 4MB).
  • Alternatively offering a Debian or similar base image variant for glibc where performance seems better than Alpine with musl at the expense of image size.

This is just a suggestion based on insights from the referenced issue and closed PR.

It might be worth waiting to see if it interests / impacts anyone else, or if they also get approx 15% faster run times (both for parallel and single tests).

Activity

  1. polarathene commented on Feb 3, 2023

    @polarathene
    ContributorAuthor

    CI (GitHub Actions) workflow runs for the test cases I had observed performance of locally (with --openssl /usr/bin/openssl) now cover the drwetter/testssl.sh:3.1dev image changed from Alpine 3.16 (OpenSSL 1.1) to Alpine 3.17 (OpenSSL 3.0) below.


    Alpine 3.16 (199s):

    ok 2 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + RSA in 34254ms
    ok 3 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + ECDSA in 30780ms
    ok 4 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + ECDSA with RSA fallback in 34941ms
    ok 5 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + RSA in 32754ms
    ok 6 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + ECDSA in 31752ms
    ok 7 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + ECDSA with RSA fallback in 35344ms
    

    Alpine 3.17 update (223s):

    ok 2 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + RSA in 37618ms
    ok 3 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + ECDSA in 35239ms
    ok 4 [Security] (TLS) (cipher lists) 'TLS_LEVEL=intermediate' + ECDSA with RSA fallback in 39413ms
    ok 5 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + RSA in 37449ms
    ok 6 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + ECDSA in 36310ms
    ok 7 [Security] (TLS) (cipher lists) 'TLS_LEVEL=modern' + ECDSA with RSA fallback in 37397ms
    

    So local observations are likely to benefit the Github Actions CI runs by approx 15% as well if openssl1.1-compat were used instead.

  2. drwetter commented on Mar 4, 2023

    @drwetter
    Collaborator

    CI (GitHub Actions) workflow runs for the test cases I had observed performance of locally (with --openssl /usr/bin/openssl) now cover the drwetter/testssl.sh:3.1dev image

    Probably I haven´t looked good enough at this. Any change in the Dockerimage which is not coherent with the pulled files is not something which I am really fond of -- for both the CI and the user image.

    For the former case the point of the CI test is to test the binary. I´d rather skip one test there. And to the user the image should hand out the same as if it's pulled from the repo.

    In next development stage (after 3.2) is usage of a different openssl version per default probably a good idea (TBC).

  3. polarathene commented on Mar 4, 2023

    @polarathene
    ContributorAuthor

    When I was talking about CI, I meant the CI runs on a project I maintain where testssl.sh was used via the Docker image.


    Any change in the Dockerimage which is not coherent with the pulled files is not something which I am really fond of -- for both the CI and the user image.

    No change here. Just an additional package installed in the image that can be used with --openssl as an alternative binary.

    The user running the image would explicitly provide that option and path to use the openssl1.1-compat binary.

    And to the user the image should hand out the same as if it's pulled from the repo.

    Sorry, I'm not following?

    With the upgrade to Alpine 3.17 base image, OpenSSL is 3.x series, where as previously it was the 1.x series. This is not related to testssl.sh beyond Dockerfile.

    A pull from this repo doesn't control the OpenSSL provided within the base image (or outside of Docker, whatever OpenSSL is on the host system).


    It's all good to decline this request 👍

    Main benefit is the observed 15% faster performance running testssl.sh with the OpenSSL 1.x series.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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