This seems reasonable, although I'd call it "tr-allow-plain" to indicate that 
plain text HTTP is enabled along with TLS. As noted, this is similar in flavor 
to the existing "tr-pass" except instead of blind tunneling, it tries plain 
text HTTP. We can allow both with a preference for plain text HTTP. So

1. If client HELLO, do TLS
2. if "tr-allow-plain" and it looks like HTTP (e.g. there is the string 
"HTTP/1.0" or "HTTP/1.1", do plain text HTTP
3.if "tr-pass" then blind tunnel.

-----Original Message-----
From: SUSAN HINRICHS <shinr...@ieee.org.INVALID> 
Sent: Sunday, March 19, 2023 8:00 PM
To: dev@trafficserver.apache.org
Subject: [api] Add tr-try-plain port descriptor

I would like to propose another port descriptor, tr-try-plain.  The current 
list is recorded in the documentation link below.

https://docs.trafficserver.apache.org/admin-guide/files/records.config.en.html#proxy-config-http-server-ports

With this port descriptor, if the TLS client hello does not work for a TLS 
connection, this descriptor indicates that ATS should attempt to process the 
connection as a non-TLS HTTP connection.

This is useful for our dynamic transparent case.  If our policy has traffic on 
a random port, e.g. 5555, we cannot know whether that traffic should be TLS or 
or non-TLS.  If the SSL port is decorated with tr-try-plain, we can start with 
TLS processing and then attempt non-TLS.

I have a patch against 9.1.x that implements this logic against the tr-pass 
port descriptor.  While changing the tr-pass logic works for us, we should 
probably have another descriptor to preserve the original logic.

I'd appreciate comments before I set up a PR.

Thanks,
Susan

Reply via email to