-
Notifications
You must be signed in to change notification settings - Fork 828
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
adding CAA record #1849
adding CAA record #1849
Conversation
@jimangel – took a peep, lgtm. We'll need to test it once this goes live. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How do we test this? Maybe add CAA for one specific low-risk name, verify it, and then expand?
@@ -18,6 +18,10 @@ | |||
preference: 10 | |||
- exchange: alt4.aspmx.l.google.com. | |||
preference: 10 | |||
- type: CAA # Which CA's can issue certs for the domain | |||
values: | |||
- 0 issue \"pki.goog\" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
where do we get these string values?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The string came from a generated CAA record using https://sslmate.com/caa/, I used the option to check for currently used CA's via https://certificate.transparency.dev/ (logs). I know we're primarily concerned with LE (via netlify) but from that generation, it pulled in pki.goog
. I think it's safe to assume we use(d) Google's CA for managed certs too.
@thockin this needs to go live before we can test it on k8s.io I think? I took a peek at the Netlify docs and I'm not sure there's a way we can test for certificate authority without it going live. |
I can do a smoke test with a personal domain through netlify (a breaking test and a working test). It wouldn't account for all edge cases but it would validate k/website won't fall over. Any other low-risk domains owned by Kubernetes come to mind @thockin? Also, given the potential impact of unknowns we could send out an email to kubernetes-dev announcing 24h before merging. It will raise awareness and give folks the opportunity for "whatabouts." Edit: We can also test with a subdomain first if we feel that's safer 🤷 |
I have a domain First I created an octoDNS container using the following Dockerfile (this is before I found the repo's Dockerfile):
Next I created the following
I captured the current
Then I added a line for a CAA record for Google PKI (knowing that I want Let's Encrypt, and it should break):
I applied the above config with the following command:
Next I created a bootstrap basic site in Netlify using a custom domain Given the output, I also needed to create a CNAME, so why not use octoDNS 🤷:
I applied with the same
I updated the production.yaml and included Let's Encrypt and applied with the same
Once again working with Netlify support to get the public Let's Encrypt auth URL (https://acme-v02.api.letsencrypt.org/acme/authz-v3/12088962179):
I can also validate by navigating to the site: Lastly, we can test this outside of Netlify using
At this point, I feel comfortable with this merging from a technical standpoint. It's still worth raising visibility on this change in case there's a strange edge case out there issuing certs. Once ready, I would suggest merging this PR and afterwards open a PR for
|
SGTM. Want to send email? |
Sure! With 1.21 getting cut on Thursday, I think we should hold off until Friday / Monday afterwards. Unless anyone feels strongly about getting it in ASAP. |
/priority important-soon |
/lgtm |
Seems OK. I'd publicize this to infra folks and maybe others too before merging. |
/milestone v1.23 |
👋 Hey all, what needs to be done to merge this? Happy to drive it forward, unclear about the next steps. Thanks! |
I'm vaguely unclear on the consequences of merging this right now, let's try to get this merged next week when we have more folks around to handle any repercussions |
After this PR is merged, only Google's CA and LetsEncrypt's CA can issue TLS/SSL certificates for only the domain "*.kubernetes.io". Any other CAs (DigitCert, Comodo, Entrust, GlobalSign, GoDaddy, etc) would fail. As far as we can tell, based on public record, Google's CA and LetsEncrypt's CA are the only two CAs used by kubernetes.io. As of 2017, Certificate Authority Authorization (CAA) record checking is mandatory for all Certificate Authorities. In a "worst case" scenario, someone using an alternative CA couldn't issue a new certificate for *.kubernetes.io and would have to add their CA to the accepted list (modeled in the current PR here). The certificate rejection response would indicate it's a CAA issue leading them hopefully back to here / Slack. I also hope that renewing critical PKI infrastructure isn't done "just in time" and there's a renewal before expiry to remediate any issues.
Works for me! After we get this one in, I'll open one for k8s.io (which has one additional CA for AWS). |
I suggest also using https://github.com/kubernetes-sigs/contributor-tweets/ to publicize the announcement within the contributor community. Would that be useful? |
Capturing some findings from our meeting today (SIG-k8s-infra | Sept 29th 2021):
TL;DR: The known knowns are accounted for and should not be removed from the list now or in the future without validation. We can still send out an FYI before / after merging to the k-dev mailing list if anything comes up. A revert is just a PR away if anything goes really wacky :) |
I got a little shy about slamming approve right away since I'm about to go AFK, I'll do this first thing tomorrow |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/approve
/lgtm
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: jimangel, spiffxp The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/hold cancel |
Notice sent to kubernetes-dev@: https://groups.google.com/g/kubernetes-dev/c/JCaVGcV_PH0 |
Personally I'd rather wait to raise signal beyond the audience on kubernetes-dev, but I'm willing to be wrong on this if someone would like to take the lead here. |
Adding a CAA record for kubernetes.io to prevent non-explicit CAs from issuing certificates for k/website.
A couple things to look out for:
I'm not sure if the quotes need to be escapedI'm not sure if the CAAtype:
will take a map of values or how it interfaces with Google DNSAny other concerns?
/cc @celestehorgan