René's URL Explorer Experiment


Title: ECH (Encrypted client hello) support · Issue #1924 · haproxy/haproxy · GitHub

Open Graph Title: ECH (Encrypted client hello) support · Issue #1924 · haproxy/haproxy

X Title: ECH (Encrypted client hello) support · Issue #1924 · haproxy/haproxy

Description: Your Feature Request ECH (Encrypted client hello) is a developing specification for encrypting the original client hello in an HTTP1.1/HTTP2 context. The main purpose is making SNI sniffing impossible by middle boxes and other such adver...

Open Graph Description: Your Feature Request ECH (Encrypted client hello) is a developing specification for encrypting the original client hello in an HTTP1.1/HTTP2 context. The main purpose is making SNI sniffing impossi...

X Description: Your Feature Request ECH (Encrypted client hello) is a developing specification for encrypting the original client hello in an HTTP1.1/HTTP2 context. The main purpose is making SNI sniffing impossi...

Opengraph URL: https://github.com/haproxy/haproxy/issues/1924

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"ECH (Encrypted client hello) support","articleBody":"### Your Feature Request\r\n\r\nECH (Encrypted client hello) is a developing specification for encrypting the original client hello in an HTTP1.1/HTTP2 context.\r\n\r\nThe main purpose is making SNI sniffing impossible by middle boxes and other such adversarial systems. The practical implementation is not dissimilar to how SSL certificates trust is established, by using certain new DNS records (+ DNS-over-HTTPS/TLS) as source of public keys involved (instead of a few CAs).\r\n\r\nI had a short chat on the topic with @wlallemand at HAProxyConf, and he was aware of it and of the PoC referenced below. He hinted at it maybe being less relevant than before due to QUIC bringing encryption all the way through, but QUIC reaching the same level of usage as HTTP1.1/2 will take years. Especially when it still relies on Alt-Svc response headers at the moment, and while one will soon be able to advertise QUIC at the DNS level directly (see https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/) this is also going to take a hot minute to be widely available, so I'm still quite interested in ECH in general (and hopefully I'm not alone in that).\r\n\r\nSome relevant references/notes:\r\n- IETF draft: https://datatracker.ietf.org/doc/draft-ietf-tls-esni/\r\n- Cloudflare article on the topic: https://blog.cloudflare.com/encrypted-client-hello/ and public rollout announcement: https://blog.cloudflare.com/announcing-encrypted-client-hello/\r\n- PoC implementation for HAProxy (and other popular webservers/load-balancer software): https://defo.ie/ (and specifically https://github.com/sftcd/openssl/blob/ECH-draft-13a/esnistuff/haproxy.md)\r\n- Browser tracking bug for Chromium: https://bugs.chromium.org/p/chromium/issues/detail?id=1091403 and feature now shipping to stable in version 117: https://chromestatus.com/feature/6196703843581952\r\n- Browser tracking bug for Firefox: ~https://bugzilla.mozilla.org/show_bug.cgi?id=1590863~ https://bugzilla.mozilla.org/show_bug.cgi?id=1725938\r\n- No tracking bug for Webkit since it's more constrained in scope (as a rendering engine rather than a fully-fledged browser per se, see https://github.com/WebKit/standards-positions/issues/46)\r\n\r\nMore specifically for HAProxy, the work done by the DEfO PoC people has progressed quite a bit on the OpenSSL side:\r\n- ECH tracking issue https://github.com/openssl/openssl/issues/7482\r\n- Which itself is waiting on HPKE support (issue https://github.com/openssl/openssl/issues/14748) but the relevant PR for that issue is getting to its final stages so hopefully getting close 🤞 (the PR author is the same person that did the early exploration of ECH on defo.ie)\r\n\r\nThis is still somewhat early days (need HPKE merged, ECH to go from draft to RFC, and OpenSSL to adopt ECH) but I thought I'd raise this issue to have it in the tracker.\r\n\r\n### What are you trying to do?\r\n\r\nUse ECH with HAProxy\r\n\r\n### Output of `haproxy -vv`\r\n\r\n```plain\r\nHAProxy version 2.7-dev8-7941ead+mangadex-cd2a7ce 2022-11-01T14:10+00:00 - https://haproxy.org/\r\nStatus: development branch - not safe for use in production.\r\nKnown bugs: https://github.com/haproxy/haproxy/issues?q=is:issue+is:open\r\nRunning on: Linux 5.4.143-1-pve #1 SMP PVE 5.4.143-1 (Tue, 28 Sep 2021 09:10:37 +0200) x86_64\r\nBuild options :\r\n  TARGET  = linux-glibc\r\n  CPU     = generic\r\n  CC      = cc\r\n  CFLAGS  = -O2 -ggdb3 -gdwarf-4 -Wall -Wextra -Wundef -Wdeclaration-after-statement -Wfatal-errors -Wtype-limits -Wshift-negative-value -Wnull-dereference -fwrapv -Wno-unknown-warning-option -Wno-address-of-packed-member -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-clobbered -Wno-missing-field-initializers -Wno-cast-function-type -Wno-string-plus-int -Wno-atomic-alignment -DMAX_SESS_STKCTR=5\r\n  OPTIONS = USE_PCRE2=1 USE_PCRE2_JIT=1 USE_STATIC_PCRE2=1 USE_LIBCRYPT=1 USE_OPENSSL=1 USE_LUA=1 USE_SLZ=1 USE_TFO=1 USE_NS=1 USE_SYSTEMD=1 USE_QUIC=1 USE_PROMEX=1\r\n  DEBUG   = -DDEBUG_MEMORY_POOLS -DDEBUG_STRICT\r\n\r\nFeature list : +EPOLL -KQUEUE +NETFILTER -PCRE -PCRE_JIT +PCRE2 +PCRE2_JIT +POLL +THREAD -PTHREAD_EMULATION +BACKTRACE -STATIC_PCRE +STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H -ENGINE +GETADDRINFO +OPENSSL +LUA +ACCEPT4 -CLOSEFROM -ZLIB +SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL +SYSTEMD -OBSOLETE_LINKER +PRCTL -PROCCTL +THREAD_DUMP -EVPORTS -OT +QUIC +PROMEX -MEMORY_PROFILING +SHM_OPEN\r\n\r\nDefault settings :\r\n  bufsize = 16384, maxrewrite = 1024, maxpollevents = 200\r\n\r\nBuilt with multi-threading support (MAX_TGROUPS=16, MAX_THREADS=256, default=8).\r\nBuilt with OpenSSL version : OpenSSL 1.1.1q+quic-mangadex-cd2a7ce  1 Nov 2022\r\nRunning on OpenSSL version : OpenSSL 1.1.1q+quic-mangadex-cd2a7ce  1 Nov 2022\r\nOpenSSL library supports TLS extensions : yes\r\nOpenSSL library supports SNI : yes\r\nOpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3\r\nBuilt with Lua version : Lua 5.3.6\r\nBuilt with the Prometheus exporter as a service\r\nBuilt with network namespace support.\r\nSupport for malloc_trim() is enabled.\r\nBuilt with libslz for stateless compression.\r\nCompression algorithms supported : identity(\"identity\"), deflate(\"deflate\"), raw-deflate(\"deflate\"), gzip(\"gzip\")\r\nBuilt with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND\r\nBuilt with PCRE2 version : 10.40 2022-04-14\r\nPCRE2 library supports JIT : yes\r\nEncrypted password support via crypt(3): yes\r\nBuilt with clang compiler version 14.0.6\r\n\r\nAvailable polling systems :\r\n      epoll : pref=300,  test result OK\r\n       poll : pref=200,  test result OK\r\n     select : pref=150,  test result OK\r\nTotal: 3 (3 usable), will use epoll.\r\n\r\nAvailable multiplexer protocols :\r\n(protocols marked as \u003cdefault\u003e cannot be specified using 'proto' keyword)\r\n       quic : mode=HTTP  side=FE     mux=QUIC  flags=HTX|NO_UPG|FRAMED\r\n         h2 : mode=HTTP  side=FE|BE  mux=H2    flags=HTX|HOL_RISK|NO_UPG\r\n       fcgi : mode=HTTP  side=BE     mux=FCGI  flags=HTX|HOL_RISK|NO_UPG\r\n         h1 : mode=HTTP  side=FE|BE  mux=H1    flags=HTX|NO_UPG\r\n  \u003cdefault\u003e : mode=HTTP  side=FE|BE  mux=H1    flags=HTX\r\n       none : mode=TCP   side=FE|BE  mux=PASS  flags=NO_UPG\r\n  \u003cdefault\u003e : mode=TCP   side=FE|BE  mux=PASS  flags=\r\n\r\nAvailable services : prometheus-exporter\r\nAvailable filters :\r\n        [BWLIM] bwlim-in\r\n        [BWLIM] bwlim-out\r\n        [CACHE] cache\r\n        [COMP] compression\r\n        [FCGI] fcgi-app\r\n        [SPOE] spoe\r\n        [TRACE] trace\r\n```\r\n","author":{"url":"https://github.com/Tristan971","@type":"Person","name":"Tristan971"},"datePublished":"2022-11-12T09:29:13.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":77},"url":"https://github.com/1924/haproxy/issues/1924"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:5ec4c713-af26-f56f-7cb5-3753975df818
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idACDA:37764A:A6A626:DEC1B5:6A4C4AFE
html-safe-nonce1b4c4ec62106d4015b69b41597f1469c2a3125ea642c5d9967c34d8de07514e5
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQ0RBOjM3NzY0QTpBNkE2MjY6REVDMUI1OjZBNEM0QUZFIiwidmlzaXRvcl9pZCI6IjkxNTkxNTg4NjMwNjM5NjAzMTgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac4c09692541265c1f5700f2e91b67e5a6a6a7c85e8168b19b5d54aea3c0855e09
hovercard-subject-tagissue:1446352388
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/haproxy/haproxy/1924/issue_layout
twitter:imagehttps://opengraph.githubassets.com/ba71f7ee84939f6ab0a0b76513d6d5c7e12c8da7a862c47794b3d5f735b51abc/haproxy/haproxy/issues/1924
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/ba71f7ee84939f6ab0a0b76513d6d5c7e12c8da7a862c47794b3d5f735b51abc/haproxy/haproxy/issues/1924
og:image:altYour Feature Request ECH (Encrypted client hello) is a developing specification for encrypting the original client hello in an HTTP1.1/HTTP2 context. The main purpose is making SNI sniffing impossi...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameTristan971
hostnamegithub.com
expected-hostnamegithub.com
None3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c
turbo-cache-controlno-preview
go-importgithub.com/haproxy/haproxy git https://github.com/haproxy/haproxy.git
octolytics-dimension-user_id38220289
octolytics-dimension-user_loginhaproxy
octolytics-dimension-repository_id128791889
octolytics-dimension-repository_nwohaproxy/haproxy
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id128791889
octolytics-dimension-repository_network_root_nwohaproxy/haproxy
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release65d78903193f110d7a9d1f8587c6dc3cb911aae0
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/haproxy/haproxy/issues/1924#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fhaproxy%2Fhaproxy%2Fissues%2F1924
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fhaproxy%2Fhaproxy%2Fissues%2F1924
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=haproxy%2Fhaproxy
Reloadhttps://github.com/haproxy/haproxy/issues/1924
Reloadhttps://github.com/haproxy/haproxy/issues/1924
Reloadhttps://github.com/haproxy/haproxy/issues/1924
Please reload this pagehttps://github.com/haproxy/haproxy/issues/1924
haproxy https://github.com/haproxy
haproxyhttps://github.com/haproxy/haproxy
Notifications https://github.com/login?return_to=%2Fhaproxy%2Fhaproxy
Fork 944 https://github.com/login?return_to=%2Fhaproxy%2Fhaproxy
Star 6.7k https://github.com/login?return_to=%2Fhaproxy%2Fhaproxy
Code https://github.com/haproxy/haproxy
Issues 364 https://github.com/haproxy/haproxy/issues
Discussions https://github.com/haproxy/haproxy/discussions
Actions https://github.com/haproxy/haproxy/actions
Projects https://github.com/haproxy/haproxy/projects
Wiki https://github.com/haproxy/haproxy/wiki
Security and quality 0 https://github.com/haproxy/haproxy/security
Insights https://github.com/haproxy/haproxy/pulse
Code https://github.com/haproxy/haproxy
Issues https://github.com/haproxy/haproxy/issues
Discussions https://github.com/haproxy/haproxy/discussions
Actions https://github.com/haproxy/haproxy/actions
Projects https://github.com/haproxy/haproxy/projects
Wiki https://github.com/haproxy/haproxy/wiki
Security and quality https://github.com/haproxy/haproxy/security
Insights https://github.com/haproxy/haproxy/pulse
ECH (Encrypted client hello) supporthttps://github.com/haproxy/haproxy/issues/1924#top
https://github.com/wlallemand
type: featureThis issue describes a feature request / wishlist.https://github.com/haproxy/haproxy/issues?q=state%3Aopen%20label%3A%22type%3A%20feature%22
https://github.com/Tristan971
Tristan971https://github.com/Tristan971
on Nov 12, 2022https://github.com/haproxy/haproxy/issues/1924#issue-1446352388
@wlallemandhttps://github.com/wlallemand
https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/
https://datatracker.ietf.org/doc/draft-ietf-tls-esni/https://datatracker.ietf.org/doc/draft-ietf-tls-esni/
https://blog.cloudflare.com/encrypted-client-hello/https://blog.cloudflare.com/encrypted-client-hello/
https://blog.cloudflare.com/announcing-encrypted-client-hello/https://blog.cloudflare.com/announcing-encrypted-client-hello/
https://defo.ie/https://defo.ie/
https://github.com/sftcd/openssl/blob/ECH-draft-13a/esnistuff/haproxy.mdhttps://github.com/sftcd/openssl/blob/ECH-draft-13a/esnistuff/haproxy.md
https://bugs.chromium.org/p/chromium/issues/detail?id=1091403https://bugs.chromium.org/p/chromium/issues/detail?id=1091403
https://chromestatus.com/feature/6196703843581952https://chromestatus.com/feature/6196703843581952
https://bugzilla.mozilla.org/show_bug.cgi?id=1590863https://bugzilla.mozilla.org/show_bug.cgi?id=1590863
https://bugzilla.mozilla.org/show_bug.cgi?id=1725938https://bugzilla.mozilla.org/show_bug.cgi?id=1725938
TLS Encrypted Client Hello WebKit/standards-positions#46https://github.com/WebKit/standards-positions/issues/46
Support Encrypted Client Hello (formerly known as ESNI) openssl/openssl#7482https://github.com/openssl/openssl/issues/7482
Feature Request: Hybrid Public Key Encryption openssl/openssl#14748https://github.com/openssl/openssl/issues/14748
wlallemandhttps://github.com/wlallemand
type: featureThis issue describes a feature request / wishlist.https://github.com/haproxy/haproxy/issues?q=state%3Aopen%20label%3A%22type%3A%20feature%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.