You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I try this out with AutoTLS enabled, the domainmappings become ready, but I still get the error when I try hitting the endpoint.
upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error: 268435703:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER
Steps to Reproduce the Problem
enable internal encryption in config-network
deploy a simple hello world knative service
set up a clusterdomainclaim for your new domain
create a domainmapping
Analysis
I think the problem is in part due to fact that DomainMappings point you back at the envoy.
If you look at the DAG, you can see all the routes point to a service on port 443.
However, the one for hello goes to 80:
Internal encryption was implemented so that ports named http2 are h2c when internal encryption is disabled, h2 when enabled.
This means that the HTTPProxy defines hitting the hello service on port 80 with h2 protocol.
So when Envoy tries to make the call, it uses https (for h2), but hits the http listener on Envoy.
When you put autotls on, there is at least a listener for 443 now, but it doesn't have the route data to deal with the request (since svc.cluster.local domains don't get TLS).
Suggestion
I think one way around this is to use the internal encryption secrets for the ClusterLocal visibility domains when internal encryption is enabled. That way you get a listener on 443 for those domains. Then you'd need to change the svc to also use 443.
I suppose another option is to make the calls from the envoy back to itself not use encryption. But to me, that seems like leaving a hole in the internal encryption path.
The text was updated successfully, but these errors were encountered:
What version of Knative?
Working off main branch
Using Contour as ingress.
Discovered while trying to add internal encryption e2e tests for net-contour here: #13536
Expected Behavior
When I create a DomainMapping for my Knative Service when Internal Encryption is enabled, I am able to reach the KService successfully.
Actual Behavior
DomainMappings fail to become ready, get stuck in "EndpointsNotReady"
net-contour controller says:
I also see this in envoy logs:
When I try this out with AutoTLS enabled, the domainmappings become ready, but I still get the error when I try hitting the endpoint.
Steps to Reproduce the Problem
Analysis
I think the problem is in part due to fact that DomainMappings point you back at the envoy.
![contour-dag-encryption](https://user-images.githubusercontent.com/20053083/215516778-de9f6161-4ee8-491c-852e-eadaf5ecf43d.svg)
If you look at the DAG, you can see all the routes point to a service on port 443.
However, the one for hello goes to 80:
That service spec looks like this:
Internal encryption was implemented so that ports named http2 are h2c when internal encryption is disabled, h2 when enabled.
This means that the HTTPProxy defines hitting the hello service on port 80 with h2 protocol.
So when Envoy tries to make the call, it uses https (for h2), but hits the http listener on Envoy.
When you put autotls on, there is at least a listener for 443 now, but it doesn't have the route data to deal with the request (since svc.cluster.local domains don't get TLS).
Suggestion
I think one way around this is to use the internal encryption secrets for the ClusterLocal visibility domains when internal encryption is enabled. That way you get a listener on 443 for those domains. Then you'd need to change the svc to also use 443.
I suppose another option is to make the calls from the envoy back to itself not use encryption. But to me, that seems like leaving a hole in the internal encryption path.
The text was updated successfully, but these errors were encountered: