TLS und mTLS für das Ingress-Gateway konfigurieren

In diesem Thema wird beschrieben, wie Sie One-Way-TLS und mTLS auf dem Ingress-Gateway aktivieren.

One-Way-TLS konfigurieren

Verwenden Sie One-Way-TLS, um API-Proxyendpunkte auf dem Ingress-Gateway zu schützen. Wenn Sie One-Way-TLS aktivieren möchten, konfigurieren Sie das Ingress mit TLS-Zertifikat/-Schlüsselpaaren oder mit einem Kubernetes-Secret, wie in den folgenden Optionen beschrieben.

Option 1: Schlüssel/Zertifikat-Paar

Geben Sie die SSL-Zertifikats- und SSL-Schlüsseldateien in der Überschreibungsdatei im Attribut virtualhosts an:

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

Dabei ist $ENVIRONMENT_GROUP_NAME der Name einer Umgebungsgruppe mit entsprechenden Hostaliassen. $CERT_FILE und $KEY_FILE sind TLS-Schlüssel- und TLS-Zertifikatsdateien. Weitere Informationen finden Sie unter TLS-Zertifikate erstellen.

Option 2: Kubernetes-Secret

Erstellen Sie ein Kubernetes Secret und fügen Sie es der Überschreibungsdatei hinzu.

  1. Erstellen Sie das Secret in einem der beiden folgenden Namespaces:
    • apigee-Namespace, wenn Sie das Apigee-Ingress-Gateway verwenden.
    • istio-system-Namespace, wenn Sie das vom Kunden installierte Anthos Service Mesh verwenden.

    Apigee Ingress Gateway

    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. Konfigurieren Sie das Attribut virtualhosts in Ihrer Überschreibungsdatei:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

mTLS konfigurieren

Anstatt One-Way-TLS zu konfigurieren, können Sie mTLS auf dem Ingress-Gateway konfigurieren. Es gibt zwei Optionen zum Konfigurieren von mTLS. Eine Erklärung für beide finden Sie unten.

Option 1: Schlüssel/Zertifikat-Paar und CA-Datei

Geben Sie ein von einer Zertifizierungsstelle (Certificate Authority, CA) ausgestelltes Zertifikat mit SSL-Zertifikats- und SSL-Schlüsseldateien in der Überschreibungsdatei im Attribut virtualhosts an:

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

Dabei ist $ENVIRONMENT_GROUP_NAME der Name einer Umgebungsgruppe mit entsprechenden Hostaliassen, $CA_FILE ein autorisiertes Zertifikat und $CERT_FILE sowie $KEY_FILE TLS-Schlüssel- und TLS-Zertifikatsdateien. Weitere Informationen finden Sie unter TLS-Zertifikate erstellen.

Option 2: Kubernetes-Secrets

Zwei Kubernetes-Secrets erstellen. Das erste Secret ist für das SSL-Zertifikat/SSL-Schlüssel-Paar und das zweite für die Zertifizierungsstelle bestimmt. Fügen Sie sie dann der Überschreibungsdatei hinzu.

  1. Erstellen Sie zwei Kubernetes-Secrets in einem der beiden folgenden Namespaces:
    • apigee-Namespace, wenn Sie das Apigee-Ingress-Gateway verwenden.
    • istio-system-Namespace, wenn Sie das vom Kunden installierte Anthos Service Mesh verwenden.

    Apigee Ingress Gateway

    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. Erstellen Sie ein Secret für die Zertifizierungsstelle:

    Apigee Ingress Gateway

    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. Konfigurieren Sie das Attribut virtualhosts in Ihrer Überschreibungsdatei:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: MUTUAL  # Note: Be sure to specify MUTUAL
        sslSecret: $SECRET_NAME