Skip to content

Update SSL policies, SSL Client certificates, Quic/HTTP3 #1644

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

Closed
wants to merge 6 commits into from

Conversation

patrickdk77
Copy link
Contributor

Adds newer SSL policies
Adds SSL Client certificate support for verification and passthough
Adds quic/http3 configuration support
Makes http2 optional (packet loss makes http2 unusable)
Fix leftover port 80 definition with external_http_port definition

@buchdag buchdag added status/pr-needs-tests This PR needs new or additional test(s) status/pr-needs-docs This PR needs new or additional documentation type/feat PR for a new feature labels May 31, 2021
@buchdag
Copy link
Member

buchdag commented May 31, 2021

Hi, thanks for the PR. 👍

Adds newer SSL policies

Could you add the new SSL policies to the docs ?

Makes http2 optional (packet loss makes http2 unusable)

Could you elaborate on this ? I'm seeing more and more people having issues with http2 without really understanding why.

Also this should be documented and, if possible, tested.

Adds SSL Client certificate support for verification and passthough
Adds quic/http3 configuration support

Same thing, those new features need doc update and tests, if it is actually possible to test them with our current CI.

@patrickdk77
Copy link
Contributor Author

Good writeup on http2 issues:
https://www.twilio.com/blog/2017/10/http2-issues.html
cloudflare also has a report, and why they developed quic/http3 so fast after http2 came out.

I personally had the issue from clients in china, having high rates of packet loss causing issues when I was using aws alb's and had to disable http2 on them.

I'm not sure if quic/http3 can be tested, as it's not in the offical nginx build yet.

I'll see what I can do about the rest.

@buchdag
Copy link
Member

buchdag commented May 31, 2021

I'm not sure if quic/http3 can be tested, as it's not in the offical nginx build yet.

The CI rely on the requests package which can only do HTTP/1.1, so I guess that answers that : we can't test HTTP/2 or HTTP/3 for now, don't bother.

httpx should be out of beta sometime in 2021, has a requests compatible api and supports HTTP/2. I'll take another look at it when it's released.

Things that still need to be added to the current PR:

  • documentation update for the new SSL policies
  • documentation on how to disable HTTP/2 (maybe with a few words or links about potential issues with it ?)
  • documentation on HTTP/3 and how to enable it
  • documentation on the client certificates feature
  • tests for the client certificates feature

Also, should HTTP/2 and HTTP/3 be mutually exclusive ?

@patrickdk77
Copy link
Contributor Author

No you can run http/2 and http/3 at the same time.
http/2 run over https 443/tcp as normal, it mostly just multiplex the requests into a single tcp stream (like imap)

http/3 is the same deal as http/2, but runs over 443/udp, so it removes the issue with packet loss causing tcp to slow the connection down. There is an extra header on the http/1 http/2 response that tells the client if your http/3 enabled and what versions you support, so the client can switch over to it.

@buchdag
Copy link
Member

buchdag commented May 31, 2021

http/3 is the same deal as http/2, but runs over 443/udp

That would require an additional port published on the proxy container like --publish 443:443/udp, right ?

@patrickdk77
Copy link
Contributor Author

Ok, added documentation and I see nginx preview http3 release is using the http3 tag instead of quic tag to enable it, so I set that as the default.
I don't know python to write a test script for client certs.

@buchdag
Copy link
Member

buchdag commented Jun 2, 2021

I don't know python to write a test script for client certs.

No problem, I'll take a look at how we could/should write a test for this and come back to you when I'll have something.

In the meantime maybe we can merge this PR without the SSL client certificate feature and doc ?

@patrickdk77
Copy link
Contributor Author

Pulled the client certificate code and docs

@buchdag
Copy link
Member

buchdag commented Jun 8, 2021

@patrickdk77 with your approval I'm going to rebase the PR so when have a clean history prior to merge.

Fell free to open another PR for client certificate verification.

@buchdag
Copy link
Member

buchdag commented Jun 14, 2021

Ok I've given this a bit a more thought, I'm afraid that I'm not sure now is the time to start merging support for HTTP/3 if it is still so experimental that its isn't available in nginx yet. The aim of this image is to be based on and used with upstream nginx, not with experimental third party nginx images.

@rbrueckner82
Copy link

Hey everyone,

is it now possible to enable http3 Support with the "ENABLE_HTTP3=quic" tag at the enviroment section?

thanks for the reply

@buchdag buchdag mentioned this pull request Feb 28, 2023
@buchdag
Copy link
Member

buchdag commented Jul 10, 2023

@patrickdk77 discussion about QUIC and HTTP/3 support : #2271

@buchdag
Copy link
Member

buchdag commented Dec 26, 2023

Closed by #2274 + #2278

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/pr-needs-docs This PR needs new or additional documentation status/pr-needs-tests This PR needs new or additional test(s) type/feat PR for a new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy