Kubeadm1.14 证书调整
source link: http://dockone.io/article/8844?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
kubeadm部署的kubernets证书一直都是个诟病,默认都只有一年有效期,kubeadm 1.14.x安装后有部分证书还是一年有效期,但个别证书已修改为10年有效期,但对我们使用来说,一年有效期还是一个比较的坑,需要进行调整。
修改kubeadm 1.14.x源码,调整证书过期时间
kubeadm1.14.x 安装过后crt证书如下所示
/etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/front-proxy-ca.crt #10年有效期 /etc/kubernetes/pki/ca.crt #10年有效期 /etc/kubernetes/pki/apiserver-etcd-client.crt /etc/kubernetes/pki/front-proxy-client.crt #10年有效期 /etc/kubernetes/pki/etcd/server.crt /etc/kubernetes/pki/etcd/ca.crt #10年有效期 /etc/kubernetes/pki/etcd/peer.crt #10年有效期 /etc/kubernetes/pki/etcd/healthcheck-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt
如上所示,除了标注说明的证书为10年有效期,其余都是1年有效期,我们查看下原先调整证书有效期的源码,克隆kubernetes 源码,切换到1.14.1 tag 查看:
代码目录:staging/src/k8s.io/client-go/util/cert/cert.go
const duration365d = time.Hour * 24 * 365 func NewSelfSignedCACert(cfg Config, key crypto.Signer) (*x509.Certificate, error) { now := time.Now() tmpl := x509.Certificate{ SerialNumber: new(big.Int).SetInt64(0), Subject: pkix.Name{ CommonName: cfg.CommonName, Organization: cfg.Organization, }, NotBefore: now.UTC(), //这里已经调整为10年有效期 NotAfter: now.Add(duration365d * 10).UTC(), KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign, BasicConstraintsValid: true, IsCA: true, } certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &tmpl, &tmpl, key.Public(), key) if err != nil { return nil, err } return x509.ParseCertificate(certDERBytes) }
如上所示,通过 NewSelfSignedCACert
这个方法签发的证书都默认为10年有效期了,但这个只影响部分证书,但这样还没满足我们的需求,个别证书的有效期调整,在经过对源码的分析后,找到了如下的逻辑:
发现部分证书是通过 NewSignedCert
这个方法签发,而这个方法签发的证书默认只有一年有效期,查看代码逻辑:
cmd/kubeadm/app/util/pkiutil/pki_helpers.go
const duration365d = time.Hour * 24 * 365 func NewSignedCert(cfg *certutil.Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error) { serial, err := rand.Int(rand.Reader, new(big.Int).SetInt64(math.MaxInt64)) if err != nil { return nil, err } if len(cfg.CommonName) == 0 { return nil, errors.New("must specify a CommonName") } if len(cfg.Usages) == 0 { return nil, errors.New("must specify at least one ExtKeyUsage") } certTmpl := x509.Certificate{ Subject: pkix.Name{ CommonName: cfg.CommonName, Organization: cfg.Organization, }, DNSNames: cfg.AltNames.DNSNames, IPAddresses: cfg.AltNames.IPs, SerialNumber: serial, NotBefore: caCert.NotBefore, // 只有一年有效期 NotAfter: time.Now().Add(duration365d).UTC(), KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, ExtKeyUsage: cfg.Usages, } certDERBytes, err := x509.CreateCertificate(cryptorand.Reader, &certTmpl, caCert, key.Public(), caKey) if err != nil { return nil, err } return x509.ParseCertificate(certDERBytes) }
至此,调整 NewSignedCert
这个方法,重新进行编译,将证书有效期调整为你想要的任何时间。
如何重新编译kubeadm源码,请参考之前的文章,链接如下: Kubeadm证书过期时间调整
kubeadm 1.14 离线安装教程
> kubeadm 1.14.x 离线一键安装包教程&&地址: kubernetes 1.14 离线安装地址
原文链接:
Recommend
-
84
solidot新版网站常见问题,请点击这里查看。 提交文章 ...
-
112
白帽子袁炜在乌云网提交世纪佳缘漏洞被抓一事,你应该有所耳闻吧?这在当时引起了不小的轰动,白帽子与企业如何相处一度成为一大热门话题。就在近日,一则白帽子遭大疆威胁的事件,再一次将白帽子与企业信息安全推上了风口浪尖。下面我们一起来看看事情的经过。1....
-
86
全球工单系统 - @twoyuan - https://i.imgur.com/aNZ3JoJ.png
-
64
https CA自签名证书,并给Webserver颁发证书
-
63
马上又要到了情人节和婚礼筹备季,随着近些年物质生活越来越丰富,钻戒似乎已经成为了结婚的必备单品。一颗晶莹剔透的钻石,不仅是无数姑娘们心之向往的小梦想,也是同甘共苦后两人情感的见证,更使整个婚礼增添了一分仪式感。
-
96
绕过安卓SSL验证证书的四种方式
-
60
HTTPS安全证书访问连接知识讲解01:网络安全涉及的问题: ①. 网络安全问题-数据机密性问题 传输的数据可能会被第三方随时都能看到 ②....
-
118
NGINX - @abccccabc - 你们的 https 证书是在哪里买的??那种证书好些,听说赛门铁克的证书 chrome 认为不安全了,我想让我的网址在 chrome 上出现绿锁。
-
56
-
1
一、证书管理kubeadm 集群安装完成后,证书管理上实际上大致是两大类型:自动滚动续期手动定期续期自动滚动续期类型的证书目前从我所阅读文档和实际测试中目前只有 kubelet 的 client 证书;kubelet client 证书自动...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK