Skip to content

spnego_gssapi: implement TLS channel bindings for openssl - #13098

Closed
Foorack wants to merge 10 commits into
curl:masterfrom
Foorack:openssl-spnego-channel-binding
Closed

Foorack wants to merge 10 commits into
curl:masterfrom
Foorack:openssl-spnego-channel-binding

Conversation

@Foorack

@Foorack Foorack commented Mar 11, 2024

Copy link
Copy Markdown

Channel Bindings are used to tie the session context to a specific TLS channel. This is to provide additional proof of valid identity, mitigating authentication relay attacks.

Major web servers have the ability to require (None/Accept/Require) GSSAPI channel binding, rendering Curl unable to connect to such websites unless support for channel bindings is implemented.

IIS calls this feature Extended Protection (EPA), which is used in Enterprise environments using Kerberos for authentication.

This change require krb5 >= 1.19, otherwise channel bindings won't be forwarded through SPNEGO.

@Foorack

Foorack commented Mar 12, 2024

Copy link
Copy Markdown
Author

"Linux / hyper" CI failed during install hyper step, due to compile error in Hyper and was fixed in hyperium/hyper@4d0c184

Comment thread lib/vtls/openssl.c Outdated
@Foorack
Foorack force-pushed the openssl-spnego-channel-binding branch from 7acadc0 to 5b8c0eb Compare April 23, 2024 13:11
@Foorack

Foorack commented Apr 23, 2024 •

Copy link
Copy Markdown
Author

Rebased to bring PR up-to-date with master due to time passed.

Minor changes

  • ossl_ssl_backend_data had in upstream been renamed to ossl_ctx, and ->handle to ->ssl
  • changed u_char* to unsigned char* to be in line with rest of project

@Foorack
Foorack force-pushed the openssl-spnego-channel-binding branch 2 times, most recently from d916f49 to d776382 Compare April 24, 2024 08:24
Comment thread lib/vtls/openssl.c Outdated
@Foorack

Foorack commented Jun 18, 2024 •

Copy link
Copy Markdown
Author

Reverted Explicit Fetching implementation, for now, in order to be in-line with the rest of CURL source code. Potential migration from Implicit to Explicit Fetching is outside the scope of this specific PR.

Also resolved merge conflicts to keep branch up-to-date.

@Foorack

Foorack commented Jun 18, 2024

Copy link
Copy Markdown
Author

@bagder We've been running this change in Production on hundreds of clients for several months, and it's been working great. What is the next step for this to be merged?

Comment thread lib/vtls/vtls.c Outdated
Comment thread lib/vtls/openssl.c Outdated
@Foorack
Foorack force-pushed the openssl-spnego-channel-binding branch 2 times, most recently from d5a4b56 to 3c771e4 Compare August 6, 2024 12:38
Foorack and others added 10 commits August 7, 2024 07:26
Channel Bindings are used to tie the session context to a specific
TLS channel. This is to provide additional proof of valid identity,
mitigating authentication relay attacks.

Major web servers have the ability to require (None/Accept/Require)
GSSAPI channel binding, rendering Curl unable to connect to such
websites unless support for channel bindings is implemented.

IIS calls this feature Extended Protection (EPA), which is used in
Enterprise environments using Kerberos for authentication.

This change require krb5 >= 1.19, otherwise channel bindings won't be
forwarded through SPNEGO.

Co-Authored-By: Steffen Kieß <947515+steffen-kiess@users.noreply.github.com>
This reverts commit 3d924faaf031935701e1805c1fd880f9cfb73efe.
@Foorack
Foorack force-pushed the openssl-spnego-channel-binding branch from 3c771e4 to be3512c Compare August 7, 2024 05:26
@Foorack

Foorack commented Aug 7, 2024

Copy link
Copy Markdown
Author

Some tests failed because Launchpad was temporarily down.

@Foorack

Foorack commented Aug 7, 2024

Copy link
Copy Markdown
Author

All tests pass now!

@MarcelRaad MarcelRaad left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, thanks! It's a pity that nothing can be shared with the existing SSPI implementation as that's based on SSPI-specific types. I would appreciate more reviews from others interested in the topic (not necessarily curl maintainers).

@bagder bagder closed this in 0a5ea09 Aug 12, 2024
@bagder

bagder commented Aug 12, 2024

Copy link
Copy Markdown
Member

Thanks!

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants