在入站流量网关上配置 TLS 和 mTLS

本主题介绍了如何在 ingressgateway 上启用单向 TLS 和 mTLS。

配置单向 TLS

使用单向 TLS 来保护入站流量网关上的 API 代理端点。如需启用单向 TLS,可使用 TLS 证书/密钥对或使用 Kubernetes Secret 配置 Ingress,如以下方法中所述。

方法 1:密钥/证书对

在替换文件的 virtualhosts 属性中提供 SSL 证书和密钥文件:

virtualhosts:
  - name: $ENVIRONMENT_GROUP_NAME
    sslCertPath: "$CERT_FILE"
    sslKeyPath: "$KEY_FILE"

其中 $ENVIRONMENT_GROUP_NAME 是具有相应主机别名的环境组的名称,$CERT_FILE$KEY_FILE 是 TLS 密钥和证书文件。请参阅创建 TLS 证书

方法 2:Kubernetes Secret

创建一个 Kubernetes Secret 并将其添加到替换文件中。

  1. 使用以下两个命名空间之一创建此 Secret:
    • apigee 命名空间(如果您使用的是 Apigee 入站流量网关)。
    • istio-system 命名空间(如果您使用的是客户安装的 Anthos Service Mesh)。

    Apigee 入站流量网关

    kubectl create -n apigee secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE

    Anthos Service Mesh

    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. 配置替换文件中的 virtualhosts 属性:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

配置 mTLS

您可以在入站流量网关上配置 mTLS,而不是配置单向 TLS。有两种配置 mTLS 的方法,如下所述。

方法 1:密钥/证书对和 CA 文件

在替换文件的 virtualhosts 属性中,提供含有 SSL 证书和密钥文件的证书授权机构 (CA) 证书:

virtualhosts:
  - name: $ENVIRONMENT_GROUP_NAME
    tlsMode: MUTUAL
    caCertPath: "$CA_FILE"
    sslCertPath: "$CERT_FILE"
    sslKeyPath: "$KEY_FILE"

其中 $ENVIRONMENT_GROUP_NAME 是具有相应主机别名的环境组的名称,$CA_FILE 是授权证书,$CERT_FILE$KEY_FILE 是 TLS 密钥和证书文件。请参阅创建 TLS 证书

方法 2:Kubernetes Secret

创建两个 Kubernetes Secret。第一个 Secret 用于 SSL 证书/密钥对,第二个 Secret 用于 CA。然后,将它们添加到替换文件中。

  1. 使用以下两个命名空间之一创建两个 Kubernetes Secret:
    • apigee 命名空间(如果您使用的是 Apigee 入站流量网关)。
    • istio-system 命名空间(如果您使用的是客户安装的 Anthos Service Mesh)。

    Apigee 入站流量网关

    kubectl create -n apigee secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE

    Anthos Service Mesh

    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. 为 CA 创建 Secret:

    Apigee 入站流量网关

    kubectl create -n apigee secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE

    Anthos Service Mesh

    kubectl create -n istio-system secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE
  3. 配置替换文件中的 virtualhosts 属性:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: MUTUAL  # Note: Be sure to specify MUTUAL
        sslSecret: $SECRET_NAME