-
Notifications
You must be signed in to change notification settings - Fork 303
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
Cannot Disable HTTP when using managed-certificates. HTTPS + HTTP are both provisioned #764
Comments
This was previously reported, but the issue was masked by issues in managed-certificates up until recent versions. See #738 |
Debugging config from provisioned ingress:
|
@jakebolam Ok, now I think you have discovered the bug. Turns out, we knew about this and were fixing it (#631) but the PR stalled a bit. I actually thought this PR was merged a while back and as a result I gave you the wrong advice in #738 (regarding adding the annotation after the frontend was configured) so apologies for that. /assign |
@jakebolam A potential workaround might be to delete the HTTP resources manually until we can ship the fix. |
no worries, thanks for replying so fast. Looking forward to the PR getting merged. Will do 😄 |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Hi, I'm also looking forward to getting PR #631 merged. Any update on that stalled PR? Chris- |
BTW : We are looking at fixing the issue in #631 not on that specific PR. |
Just to confirm: manually deleting the LB Frontend port/protocol is a viable workaround until the fix lands? |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
@fejta-bot: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Could be related to this: Any signs that it will finally be resolved? |
I'm also seeing this issue with GKE Since it's not yet possible to redirect http->https (https://issuetracker.google.com/issues/35904733) and this annotation doesn't work when using GCP managed certificates, there doesn't appear to be a good way to easily disable the HTTP port left open by the GKE ingress controller. |
Unable to disable HTTP via annotation |
I think this should be solved as soon as possible, it's a real shame a security issue of this size is still open... Even without rewrite, disabling http completely should suffice at least for most restricted scenarios |
Quoting a Googler from the parent issue in Google's bug tracker I linked above:
Help is on its way, unfortunately I am not white-listed and cannot provide any feedback for how good/bad the solution is. If anybody is, please let us know anything that an alpha NDA allows you to. |
/reopen |
@jmound: You can't reopen an issue/PR unless you authored it or you are a collaborator. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@jakebolam Feel free to reopen it, I don't think this issue should be closed. |
The 5year old underlying issue seems to have been resolved. The question is - correctly asked as the next comment in the issue tracker - how can we make this work in GKE? |
@rramkumar1 Are you able to reopen this issue? If not, should a new one be opened? |
@jmound Let me refresh myself on what the exact issue was here and get back to you. Thanks. |
@jmound So there are a couple things to unpack here:
Hope that helps. |
The fix(#894) is available in GKE version v1.16.4-gke.25 and above(or Ingress v1.8.2). |
Hi, just tried this fix (allowHttp: false) with cluster version 1.17.5-gke.0 |
No, in terms of actual security, http->https redirect is equivalent to the situation I described above, in that my plain HTTP request travels over the network, even if it shouldn't (the only difference is I receive a 302 response instead of a 404 one, but the concept is the same). Completely blocking the traffic on port 80 can be useful in case some REST API users do not comply with the given specifications (i.e. they deliberately or erroneously use http instead of https for an endpoint). Clearly, the steady-state situation is the same - a user receiving a 404 response will modify its client calls accordingly - but meanwhile some (possibly sensitive or private) data have been travelling in plaintext over the public internet. |
@pgp I see, thanks for the clarification. I'll bring this up with our load balancing teams to see if there is a feature request here (or solution). Until this sort of feature is supported in the upstream load balancing API there is nothing we can do here. |
@pgp Found https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security. Not sure if it helps in your case. |
That always regards the response a server sends, nothing prevents the client from sending any kind of data in plain text before knowing this... Anyway, I'll look for possible updates on this issue, thanks for now. |
I'm also facing this issue on the latest version and I'm losing my mind. |
my hydrated yaml looks like this and the cert tries to create itself and every time it just ends up saying apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
name: my-app-certificate
namespace: my-app
spec:
domains:
- my.domain
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true"
kubernetes.io/ingress.allow-http: "false"
kubernetes.io/ingress.global-static-ip-name: my-app-static-ip
networking.gke.io/managed-certificates: my-app-certificate
name: my-app-ingress
namespace: my-app
spec:
backend:
serviceName: my-app
servicePort: 80 |
Cannot disable HTTP when using managed-certificates
When specifying the annotation
kubernetes.io/ingress.allow-http: "false"
the ingress still accepts HTTP traffic.Versions
Kubernetes master/node-kube version:
1.12.7-gke.17
(Note: must be equal to or greater than this version, managed certificates had issues prior to this version see GoogleCloudPlatform/gke-managed-certs#2)Additional Details:
I also tried (#738 (comment)):
kubernetes.io/ingress.allow-http: "false"
.allow-http to "false"
Configuration
The text was updated successfully, but these errors were encountered: