-
Notifications
You must be signed in to change notification settings - Fork 729
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
Customizable transport layer certificates #4025
Comments
Apologies for the very late reply. A few questions to better understand the problem:
I assume this means your legacy transport client application is running inside the Kubernetes cluster?
Would a Kubernetes service (ClusterIP without LoadBalancer) in that case not do the trick? Having said that, your proposal to use a similar approach as on the HTTP layer seems reasonable. I am just trying to get a better understanding of the use cases for the feature. |
Hi, thanks for your feedback.
No, not at all...I just phrased this suboptimal.
Since this is the case, sadly a ClusterIP would not suffice. Short story: The software connects from externally through a LoadBalancer (or through an Passthrough-Ingress) to the transport interface. Either way, the POD answers with a certificate containing only the POD IPs and credentials for the cluster internal communication in the SANs. The switch to adapt the Transport Layer SAN entries is missing. Which is why the certificate chain cannot be verified and connections are rejected :) |
I have a request regarding the certificate management for the transport layer certificates.
The basic construct is as follows.
As long as I communicate directly with the Pods through the Pod-IPs everything works fine.
However, since these IPs are dynamic by nature I would like to implement the communication based on a LoadBalancer.
As described in https://www.elastic.co/guide/en/cloud-on-k8s/master/k8s-transport-settings.html, I deployed the LoadBalancer for the transport interface.
Which works...
...and registers the endpoints as expected.
However, I am not able to communicate with the cluster through the application since the communication is blocked with the following message.
As expected, the certificate returned by the LoadBalancer is one of the coordinating nodes.
It seems the error arrises, because the certificates are validated in full.
Therefore, since the application connects to the LoadBalancer on 172.16.189.102 and the certificate returns only the node IP 10.233.35.71, the communication is not trusted.
For the http interface there is the option to provide custom SANs for the certificates
https://www.elastic.co/guide/en/cloud-on-k8s/master/k8s-http-settings-tls-sans.html#k8s-elasticsearch-http-service-san
However, this does not seem to be possible for the transport interface.
Would it be possible to implement a the construct of customizing cerfiticates on the transport layer like this, to incorporate the LoadBalancer IP?
The text was updated successfully, but these errors were encountered: