Skip to content

Comments

Remove support for SSLv2 Client Hello#28041

Closed
kroeckx wants to merge 1 commit intoopenssl:masterfrom
kroeckx:sslv2
Closed

Remove support for SSLv2 Client Hello#28041
kroeckx wants to merge 1 commit intoopenssl:masterfrom
kroeckx:sslv2

Conversation

@kroeckx
Copy link
Member

@kroeckx kroeckx commented Jul 15, 2025

Drop support for the SSLv2 Client Hello. We allowed that a client send an SSLv2 compatible Client Hello.

Checklist
  • documentation is added or updated
  • tests are added or updated

@kroeckx kroeckx force-pushed the sslv2 branch 3 times, most recently from 27c375f to 2d67d58 Compare July 15, 2025 09:53
@github-actions github-actions bot added the severity: fips change The pull request changes FIPS provider sources label Jul 15, 2025
@kroeckx
Copy link
Member Author

kroeckx commented Jul 15, 2025

SSLv2 support itself was dropped in 1.1.0 (2016). I think the reason for keeping the SSLv2 compatible client hello support was that 0.9.8 used to do that by default. But I think it's about time to remove this.

@kroeckx
Copy link
Member Author

kroeckx commented Jul 15, 2025

We have this in ssl_local.h:

/* Flag used on OpenSSL ciphersuite ids to indicate they are for SSLv3+ */
# define SSL3_CK_CIPHERSUITE_FLAG                0x03000000

That is, it's to say it's not an SSLv2 cipher having 3 bytes.

And in include/openssl/ssl3.h all ciphers starts with 0x0300. When this patch is applied, in theory we could remove that 0x3000 from all the cipher values. But I'm not sure now is a good time to do that as it's a public header.

Copy link
Contributor

@paulidale paulidale left a comment

Choose a reason for hiding this comment

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

Nice work. One suggestion.

paulidale
paulidale previously approved these changes Jul 17, 2025
Copy link
Contributor

@paulidale paulidale left a comment

Choose a reason for hiding this comment

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

I'm more than happy to see the end of this one.

@paulidale paulidale added branch: master Applies to master branch approval: review pending This pull request needs review by a committer triaged: feature The issue/pr requests/adds a feature tests: present The PR has suitable tests present labels Jul 17, 2025
@mattcaswell
Copy link
Member

I think the reason for keeping the SSLv2 compatible client hello support was that 0.9.8 used to do that by default.

That, but also Internet Explorer 6 sent the SSLv2 compatible ClientHello by default. Windows XP shipped with IE6 by default. I assume at the time we were still concerned about lingering XP instances out there. I hope we don't have to worry about that in 2025!!

Copy link
Member

@mattcaswell mattcaswell left a comment

Choose a reason for hiding this comment

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

It seems this is worthy of a CHANGES.md entry (and arguably NEWS.md as well)

Copy link
Member

@mattcaswell mattcaswell left a comment

Choose a reason for hiding this comment

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

Looks good. A few minor comments

InfoHunter
InfoHunter previously approved these changes Aug 28, 2025
Copy link
Member

@InfoHunter InfoHunter left a comment

Choose a reason for hiding this comment

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

Great to see this. No need to consider IE6.

paulidale
paulidale previously approved these changes Aug 28, 2025
@paulidale paulidale added approval: done This pull request has the required number of approvals and removed approval: review pending This pull request needs review by a committer labels Aug 28, 2025
@openssl-machine openssl-machine removed the approval: done This pull request has the required number of approvals label Aug 30, 2025
@openssl-machine
Copy link
Collaborator

This pull request is ready to merge

@openssl-machine openssl-machine added the approval: ready to merge The 24 hour grace period has passed, ready to merge label Aug 30, 2025
Copy link
Member

@t8m t8m left a comment

Choose a reason for hiding this comment

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

As this was not merged in time for 3.6 version, could you please replace all the references to 3.6 with 4.0?

@t8m t8m removed the approval: ready to merge The 24 hour grace period has passed, ready to merge label Sep 9, 2025
@openssl-machine
Copy link
Collaborator

This PR is waiting for the creator to make requested changes but it has not been updated for 30 days. If you have made changes or commented to the reviewer please make sure you re-request a review (see icon in the 'reviewers' section).

@kroeckx
Copy link
Member Author

kroeckx commented Jan 14, 2026

Thank you for updating it, it looks good.

mattcaswell
mattcaswell previously approved these changes Jan 14, 2026
Copy link
Member

@mattcaswell mattcaswell left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@t8m t8m left a comment

Choose a reason for hiding this comment

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

2 nits

esyr
esyr previously approved these changes Jan 14, 2026
Copy link
Member

@esyr esyr left a comment

Choose a reason for hiding this comment

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

ossl_bytes_to_cipher_list might need an additional refactoring pass to get the unneeded local variable replaced with a constant, and a test for actually failing sslv2 hello is a nice to have, but otherwise LGTM.

tomato42
tomato42 previously approved these changes Jan 15, 2026
Copy link
Contributor

@tomato42 tomato42 left a comment

Choose a reason for hiding this comment

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

LGTM

Drop support for the SSLv2 Client Hello. We allowed that a client send
an SSLv2 compatible Client Hello.
@levitte
Copy link
Member

levitte commented Jan 15, 2026

Unfortunately, re-approvals needed

Copy link
Member

@beldmit beldmit left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Contributor

@tomato42 tomato42 left a comment

Choose a reason for hiding this comment

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

still LGTM

@levitte levitte added approval: done This pull request has the required number of approvals and removed approval: review pending This pull request needs review by a committer labels Jan 15, 2026
@openssl-machine openssl-machine added approval: ready to merge The 24 hour grace period has passed, ready to merge and removed approval: done This pull request has the required number of approvals labels Jan 16, 2026
@openssl-machine
Copy link
Collaborator

This pull request is ready to merge

openssl-machine pushed a commit that referenced this pull request Jan 16, 2026
Drop support for the SSLv2 Client Hello. We allowed that a client send
an SSLv2 compatible Client Hello.

Reviewed-by: Dmitry Belyavskiy <[email protected]>
Reviewed-by: Alicja Kario <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from #28041)
@levitte
Copy link
Member

levitte commented Jan 19, 2026

It looks like @mattcaswell merged this last Friday, ending up with 09c2bc5 in the master branch.

Therefore closing this.

@levitte levitte closed this Jan 19, 2026
esyr pushed a commit to esyr/openssl that referenced this pull request Jan 19, 2026
Drop support for the SSLv2 Client Hello. We allowed that a client send
an SSLv2 compatible Client Hello.

Reviewed-by: Dmitry Belyavskiy <[email protected]>
Reviewed-by: Alicja Kario <[email protected]>
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Matt Caswell <[email protected]>
(Merged from openssl#28041)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approval: ready to merge The 24 hour grace period has passed, ready to merge branch: master Applies to master branch tests: present The PR has suitable tests present triaged: feature The issue/pr requests/adds a feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.