TLS und mTLS beim Istio-Ingress konfigurieren

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

One-Way-TLS konfigurieren

Verwenden Sie One-Way-TLS, um API-Proxyendpunkte auf dem Istio-Ingress 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 im Namespace istio-system und fügen Sie der Überschreibungsdatei den Secret-Namen hinzu:

  1. Erstellen Sie das Secret:
    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 Istio-Ingress 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

Erstellen Sie zwei Kubernetes-Secrets im Namespace istio-system. Das erste Secret ist für die Zertifizierungsstelle und das zweite für das SSL-Zertifikat/SSL-Schlüssel-Paar bestimmt. Fügen Sie sie dann der Überschreibungsdatei hinzu.
  1. Erstellen Sie zwei Kubernetes-Secrets im Namespace istio-system. Das erste Secret ist für die Zertifizierungsstelle und das zweite für das SSL-Zertifikat/SSL-Schlüssel-Paar bestimmt:
    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:
    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