2.6.3. 添加外部证书颁发机构密钥和证书

默认情况下,Red Hat OpenShift Service Mesh 生成自签名 root 证书和密钥,并使用它们为工作负载证书签名。您还可以使用用户定义的证书和密钥使用用户定义的 root 证书为工作负载证书签名。此任务演示了一个将证书和密钥插入 Service Mesh 的示例。

先决条件

  • 您必须已安装了启用了 mutual TLS 配置证书的 Red Hat OpenShift Service Mesh。
  • 本例使用 Maistra 仓库中的证书。对于生产环境,请使用您自己的证书颁发机构提供的证书。
  • 您必须部署 Bookinfo 示例应用程序以按照以下说明验证结果。

2.6.3.1. 添加一个现有证书和密钥

要使用现有签名(CA)证书和密钥,必须创建一个信任文件链,其中包括 CA 证书、密钥和 root 证书。您必须为每个对应证书使用以下准确文件名称。CA 证书名为 ca-cert.pem,密钥是 ca-key.pem,签名 ca-cert.pem 的 root 证书名为 root-cert.pem。如果您的工作负载使用中间证书,则必须在 cert-chain.pem 文件中指定它们。

按照以下步骤将证书添加到 Service Mesh。本地保存 Maistra repo 中的示例证书,,将 <path> 替换为证书的路径。

  1. 创建一个 secret cacert,其中包含输入文件 ca-cert.pemca-key.pemroot-cert.pemcert-chain.pem

    $ oc create secret generic cacerts -n istio-system --from-file=<path>/ca-cert.pem \
        --from-file=<path>/ca-key.pem --from-file=<path>/root-cert.pem \
        --from-file=<path>/cert-chain.pem
  2. ServiceMeshControlPlane 资源中将 global.mtls.enabled 设置为 true,并将 security.selfSigned 设置为 false。Service Mesh 从 secret-mount 文件中读取证书和密钥。

    apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    spec:
      istio:
        global:
          mtls:
            enabled: true
        security:
          selfSigned: false
  3. 要确保工作负载迅速添加新证书,请删除名为 istio.* 的 Service Mesh 生成的 secret。在这个示例中, istio.default。Service Mesh 为工作负载发布新证书。

    $ oc delete secret istio.default