Skip to content

[Feature request] Add "hybrid starttls" mode for starttls protocols not handled by openssl #2925

@klaus-vb

Description

@klaus-vb

Please check this repo whether this is a known feature request

Done, nothing remotely similar found.

Describe your feature request (if it's a technical feature)

It's quite straightforward to add a new protocol to the "non-native" code path. However, there are a few places where the native openssl starttls protocol handling is used unconditionally, in determine_optimal_proto(), run_fs() and ciphers_by_strength().

But it's annoying redundant effort to extend openssl's starttls support in the context of testssl.sh. Additionally one needs to ship such extended binaries to the users.

This issue popped up when I've looked into ciphersuite scanning for the RDP protocol. Something which turned out to be quite little effort to add in testssl.sh except for some errors from the code paths which insist using openssl.

Describe the solution you'd like

The fundamental idea is using the same approach (socat + openssl s_client with unix domain socket) as used in a single place already, run_starttls_injection(). There fd_socket is used to handle the dialog, and after that socat hooks things up to openssl s_client without using starttls). Perfectly modular code: starttls dialog using sockets, and openssl is used purely for "vanilla SSL/TLS".

What worries me somewhat is that the change is implicitly replicated to at least 3 places, because I can't see a straightforward solution which can wrap such openssl usage variants in vastly differing use cases.

I'm happy to discuss alternatives and once the direction is clear it should be possible to provide a patch to start towards integration.

Which version are you referring to
3.3dev

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions