Kubeadm1.14 证书调整

栏目: 编程工具 · 发布时间: 5年前

内容简介:kubeadm部署的kubernets证书一直都是个诟病,默认都只有一年有效期,kubeadm 1.14.x安装后有部分证书还是一年有效期,但个别证书已修改为10年有效期,但对我们使用来说,一年有效期还是一个比较的坑,需要进行调整。如上所示,除了标注说明的证书为10年有效期,其余都是1年有效期,我们查看下原先调整证书有效期的源码,克隆kubernetes 源码,切换到1.14.1 tag 查看:如上所示,通过

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 离线安装地址

原文链接:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

App研发录:架构设计、Crash分析和竞品技术分析

App研发录:架构设计、Crash分析和竞品技术分析

包建强 / 机械工业出版社 / 2015-10-21 / CNY 59.00

本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等......一起来看看 《App研发录:架构设计、Crash分析和竞品技术分析》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换