Istio实战(十二)-Istio 延长自签发证书的有效期

这篇具有很好参考价值的文章主要介绍了Istio实战(十二)-Istio 延长自签发证书的有效期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        因为历史原因,Istio 的自签发证书只有一年的有效期。如果你选择使用 Istio 的自签发证书,就需要在它们过期之前订好计划进行根证书的更迭。根证书过期可能会导致集群范围内的意外中断。

        我们认为每年更换根证书和密钥是一个安全方面的最佳实践,我们会在后续内容中介绍如何完成根证书和密钥的轮换过程。

        为了了解根证书的剩余有效期,请参考下面过程中的第一步。

        我们提供了下面的过程,用于完成根证书更新工作。Envoy 进程不需要进行重启来载入新的根证书,也就不会影响长链接了。要了解 Envoy 的热重启过程及其影响范围,请参考相关的文档和博客。

一、场景

        如果目前没有使用双向 TLS 功能,未来也不准备使用,那么无需进行任何操作。可以选择升级到 1.0.8、1.1.8 或者更晚的版本,避免未来产生这一问题。

        如果目前没有使用双向 TLS,但是未来准备采用,建议跟随下列步骤进行更新。

        如果目前正在使用自签署证书支持的双向 TLS,请跟随下面的步骤进行操作,并检查当前部署是否受到影响。

二、根证书迁移过程

  1. 检查根证书是否过期:

  2. 下载脚本到一个包含有 kubectl 并能以此访问集群的机器上。

    $ wget https://raw.githubusercontent.com/istio/tools/master/bin/root-transition.sh
    $ chmod +x root-transition.sh
    $ ./root-transition.sh check
    ...
    ===YOU HAVE 30 DAYS BEFORE THE ROOT CERT EXPIRES!=====
    

    在根证书到期之前执行剩余步骤,以防系统停机。

  3. 执行根证书更新过程:

    在更新过程中,Envoy 会用热重启的方式来载入新的证书。这可能对流量产生一定影响。 可以阅读 Envoy 热启动方面的相关文档和博客,来了解更多细节。

    如果你的 Pilot 没有 Envoy Sidecar,则应该给 Pilot 安装一个 Sidecar。这是因为 Pilot 在使用旧的根证书来验证新的工作负载证书时会出现问题,导致 Pilot 和 Evnoy 之间断开连接。请参考相关步骤,以了解如何进行检查。Istio 升级指南中缺省会为 Pilot 安装 Envoy Sidecar。

    $ ./root-transition.sh transition
    Create new ca cert, with trust domain as cluster.local
    Wed Jun  5 19:11:15 PDT 2019 delete old ca secret
    secret "istio-ca-secret" deleted
    Wed Jun  5 19:11:15 PDT 2019 create new ca secret
    secret/istio-ca-secret created
    pod "istio-citadel-8574b88bcd-j7v2d" deleted
    Wed Jun  5 19:11:18 PDT 2019 restarted Citadel, checking status
    NAME                             READY     STATUS    RESTARTS   AGE
    istio-citadel-8574b88bcd-l2g74   1/1       Running   0          3s
    New root certificate:
    Certificate:
        Data:
            ...
            Validity
                Not Before: Jun  6 03:24:43 2019 GMT
                Not After : Jun  3 03:24:43 2029 GMT
            Subject: O = cluster.local
            ...
    Your old certificate is stored as old-ca-cert.pem, and your private key is stored as ca-key.pem
    Please save them safely and privately.
    
  4. 检查为工作负载新生成的证书:

    $ ./root-transition.sh verify
    ...
    Checking the current root CA certificate is propagated to all the Istio-managed workload secrets in the cluster.
    Root cert MD5 is 8fa8229ab89122edba73706e49a55e4c
    Checking namespace: default
      Secret default.istio.default is updated.
      Secret default.istio.sleep is updated.
    Checking namespace: istio-system
      Secret istio-system.istio.default is updated.
      ...
    ------All Istio keys and certificates are updated in secret!
    

    Citadel 的证书分发过程需要一段时间来完成,因此命令失败,可以在几分钟之后再次尝试。

  5. 升级到 Istio 1.0.8、1.1.8 或更新的版本:

    这一步骤能够确保控制平面组件和 Envoy Sidecar 全部载入新的证书和密钥

    将控制平面和 istio-proxy 升级到 1.0.8、1.1.8 或更新的版本。请依照 Istio 更新过程的介绍来完成这一步骤。

  6. 检查 Envoy 是否已经载入新的工作负载证书:

    可以检查一下,Envoy 是否收到了新的证书。要检查命名空间 bar 之中一个名为 foo 的 Pod,验证它的 Envoy 证书的过程:

    $ kubectl exec -it foo -c istio-proxy -n bar -- curl http://localhost:15000/certs | head -c 1000
    {
     "certificates": [
      {
       "ca_cert": [
          ...
          "valid_from": "2019-06-06T03:24:43Z",
          "expiration_time": ...
       ],
       "cert_chain": [
        {
          ...
        }
    

    查看 ca_cert 中的 valid_from。如果它符合步骤 2 中新证书的 Not Before 内容,则说明 Envoy 已经载入了新的根证书。

常见问题

        我是不是可以先升级到 Istio 1.0.8、1.1.8 或者更新的版本之后,然后再更新根证书?

        是的。可以照常升级到 Istio 1.0.8、1.1.8 或者更新的版本。在升级之后,根据步骤 4 中的内容完成根证书更新,手工重启 Galley、Pilot 以及 sidecar-injector,从而载入新的根证书。

        为什么我的工作负载没有载入新证书(步骤 5)?

        首先确认在步骤 4 中把 istio-proxy 升级到了 Istio 1.0.8、1.1.8 或者更新的版本。

        如果使用的是 Istio 1.1.3-1.1.7,Envoy 可能不会因为新证书的生成而进行热重启。

        为什么我的 Pilot 不工作,并在日志中输出 “handshake error”?

        这可能是因为启用 controlPlaneSecurity 的同时,Pilot 没有配置 Envoy Sidecar。这种情况下,需要重启 Galley 和 Pilot 来保证它们载入了新证书。例如下面的命令通过删除 Pod 的方式重新部署 Galley 和 Pilot:

$ kubectl delete po <galley-pod> -n istio-system $ kubectl delete po <pilot-pod> -n istio-system 

        如何检查 Pilot 的 Sidecar

        如果下面的命令中显示 1/1,说明 Pilot 没有 Sidecar;如果是 2/2,就表明 Pilot 是带有 Sidecar 的。

$ kubectl get po -l istio=pilot -n istio-system istio-pilot-569bc6d9c-tfwjr 1/1 Running 0 11m 

        无法使用 sidecar-injector 部署新的工作负载

        如果没有更新到 Istio 1.0.8、1.1.8 或者更新的版本,就有可能出现这种情况。请试着重新启动 Sidecar injector,重启之后就会载入证书:文章来源地址https://www.toymoban.com/news/detail-737416.html

$ kubectl delete po -l istio=sidecar-injector -n istio-system
pod "istio-sidecar-injector-788bd8fc48-x9gdc" deleted

到了这里,关于Istio实战(十二)-Istio 延长自签发证书的有效期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux设置用户的密码有效期

    使用命令chage加参数可以查看,更改用户密码的有效期。 chage -l username 如下是永不会过期的类型 以下是90天有效期的类型  ​​​​​​​ 通过参数 -M 设置账户密码的到期时间 语法: chage  -M  number-of-days  username (扩展: -M  指定的是密码有效的最大天数 -m  指定的是密码

    2024年02月06日
    浏览(53)
  • linux设置密码有效期,设置永不过期

    一、设置用户密码过期时间 1.查看admin用户密码默认情况,默认为永不修改。 2.设置密码定期过期 [root@localhost ~]# chage -d 0 -m 0 -M 90 -W 15 admin -m  #密码可更改的最小天数,为0时代表任何时候都可以更改密码 -M  #密码保持有效的最大天数 -W  #用户密码到期前,提前收到警告信息

    2024年02月03日
    浏览(33)
  • SpringBoot实现License认证(只校验有效期)

    License也就是版权许可证书,一般用于 收费软件 给付费用户提供的 访问许可证明 应用场景 应用部署在客户的内网环境 这种情况开发者无法控制客户的网络环境,也不能保证应用所在服务器可以访问外网 因此通常的做法是使用服务器许可文件,在 应用启动 的时候 加载证书

    2024年04月16日
    浏览(34)
  • 校准曲线、标准曲线、工作曲线区别:点个数、曲线评价、有效期、模型

            最近看到一篇叙述校准曲线、标准曲线、工作曲线区别的文章,但可惜的是查看收费,扪心自问,还真容易分不清,特此写下此文作为后续查看使用。 一、基本概念 校准曲线:包括标准曲线和工作曲线。在规定条件下,表示被测量值与仪器仪表实际测得值之间关系

    2024年02月03日
    浏览(27)
  • Windows 11设置登录账户密码有效期或密码永不过期的方法

    目录 文章目录 序言 网上的方法(不管用) 本地组策略编辑器 自己的方法(亲测有效) 示例命令一:添加本地账户 示例命令二:查看本地账户默认过期时间 示例命令三(推荐):设置本地账户密码永不过期 示例命令四:设置系统策略中默认密码最长时间为无限制 示例命令

    2024年02月16日
    浏览(25)
  • CentOS 7 服务器上创建新用户及设置用户密码有效期

    一、创建用户 1、以 root 用户身份登录到 CentOS 服务器 2、运行以下命令以创建新用户: 3、运行以下命令以设置新用户的密码: 4、如果您希望将新创建的用户添加到用户组中,可以通过以下命令添加: 5、运行以下命令以查看新用户所属的用户组: 6、操作 二、设置用户密码

    2024年02月03日
    浏览(43)
  • openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期

    114.1 注意事项 创建新用户时,需要限制用户的操作期限(有效开始时间和有效结束时间)。 不在有效操作期内的用户需要重新设定帐号的有效操作期。 114.2 操作步骤 以操作系统用户omm登录数据库主节点。 使用如下命令连接数据库。 postgres为需要连接的数据库名称,8000为数

    2024年02月05日
    浏览(44)
  • 签发SSL证书需要多长时间?了解证书签发过程

    SSL证书在今天的互联网环境中扮演着重要的角色,用于保护网站和用户之间的数据传输安全。然而,许多人对于SSL证书的签发时间有所困惑,签发 SSL证书 所需的时间取决于多个因素,包括证书验证类型、所选择的证书颁发机构以及是否选择加急处理选项。本文将详细介绍S

    2024年02月11日
    浏览(37)
  • 使用OpenSSL生成/签发证书步骤

    生成私钥和公钥: 2.私钥签名 对数据data.txt进行签名 3.公钥验签 生成自己的私钥文件(.key) 基于私钥生成证书请求文件(.csr) 将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓

    2024年02月03日
    浏览(32)
  • CA证书的签发流程详情

            CA证书是电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。         CA证书一般用于HTTPS服务中的SSL或TSL协议中

    2024年02月04日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包