Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add support for disabling TLSv1.0 #1562

Merged
merged 1 commit into from
Feb 20, 2019
Merged

Conversation

skrobul
Copy link
Contributor

@skrobul skrobul commented Apr 17, 2018

Many organizations run their applications using in environments that fall into scope of PCI-DSS compliance audits. One of the requirements set out by standard is to migrate to more secure protocols if possible.

PCI Security Standards council has advised to migrate away from TLSv1.0 over last few years and recently set a migration deadline of 30 June 2018 (see this article for more details).

Change proposed in this commit gives an user option to disable TLSv1.0 during bind, while still leaving the TLSv1.1 and TLSv1.2 enabled. SSLv2 and SSLv3 are permanently disabled (as they should).

Default behaviour is not changed if the no_tls option is not defined.

Related: #980

@evanphx
Copy link
Member

evanphx commented May 9, 2018

This looks fine. I merged a similar PR that caused this to need to be rebased. Can you do that and then I'll merge it.

Many organizations run their applications using in environments that fall into
scope of PCI-DSS compliance audits. One of the requirements set out by standard
is to migrate to more secure protocols if possible.

PCI Security Standards council has advised to migrate away from TLSv1.0 over
last few years and recently set a migration deadline of 30 June 2018 (see [1]
for more details).

Change proposed in this commit gives an user option to disable `TLSv1.0` during
bind, while still leaving the `TLSv1.1` and `TLSv1.2` enabled. `SSLv2` and
`SSLv3` are permanently disabled (as they should).

Default behaviour is not changed if the `no_tls` option is not defined.

[1]: https://blog.pcisecuritystandards.org/are-you-ready-for-30-june-2018-sayin-goodbye-to-ssl-early-tls
@themikejr
Copy link

Gentle bump :-) My team would benefit from this.

@skrobul
Copy link
Contributor Author

skrobul commented Aug 3, 2018

Sorry I forgot to comment, this has been rebased in e142b9f and it should be ready to merge

@MikaelSmith
Copy link

I'd love to see this fixed, although a more forward-ready implementation would be nice: the ability to list what TLS versions to allow would support disabling TLSv1.1 in the future.

@HoneyryderChuck
Copy link

Why does puma have their own "minissl", instead of using ruby's "openssl" library?

@skrobul
Copy link
Contributor Author

skrobul commented Aug 28, 2018 via email

@HoneyryderChuck
Copy link

@skrobul I get that, minissl is just an OpenSSL binding. However, the ruby std library already provides one, and with a stable albeit clunky API, which allows you to do the things this PR aims at in a future-proof way. So my question was really: why does puma feel the need to support their own openssl binding which has no API parity with ruby-openssl and has no clear advantage besides arguably "leaner" (and therefore more limited, hence this PR)? There must be a reason, right?

@MSP-Greg
Copy link
Member

MSP-Greg commented Aug 29, 2018

with a stable albeit clunky API

Given that:

  1. Ruby OpenSSL has deprecated ssl_version and replaced it with two attributes
  2. RubyGems is now only supporting TLSv1.2 connections
  3. OpenSSL 1.1.1 with TLSv1.3 has been released (2018-09-11)

Rather than add an no_tlsv1 option, might it be better to add a min_vers(ion) option? People may want a no_tlsv1_1 option in a year or so...

EDIT: just checked here (GitHub.com), and it is also only using TLSv1.2

@mmizani
Copy link

mmizani commented Sep 26, 2018

gentle bump, would be great to have this feature.

@hshyk
Copy link

hshyk commented Nov 6, 2018

Has there been any updates with this? This would be great if we could disable TLSv1. Also, would be nice for configuration to disable TLSv1.1.

@evanphx evanphx merged commit 698979f into puma:master Feb 20, 2019
evanphx added a commit that referenced this pull request Feb 20, 2019
Update test_binder.rb - skip syntax failure (PR #1562)
@schneems
Copy link
Contributor

Not clear based off of the diff, is it possible to trigger this without explicitly supplying a bind in the dsl?

If not could we add this as a new dsl option?

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

Successfully merging this pull request may close these issues.

10 participants