Configurazione di TLS e mTLS sul gateway in entrata Istio

Questo argomento spiega come abilitare TLS e mTLS on-way sul traffico in entrata di Istio.

Configurazione di TLS unidirezionale

Utilizza TLS unidirezionale per proteggere gli endpoint proxy API nel traffico in entrata di Istio. Per abilitare TLS unidirezionale, devi configurare il traffico in entrata con coppie chiave/certificato TLS o con un secret Kubernetes, come spiegato nelle opzioni seguenti.

Opzione 1: coppia chiave/certificato

Fornisci i file del certificato e della chiave SSL nella proprietà virtualhosts nel file di override:

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

Dove $ENVIRONMENT_GROUP_NAME è il nome di un gruppo di ambienti con alias host corrispondenti, mentre $CERT_FILE e $KEY_FILE sono i file della chiave e del certificato TLS. Vedi Creare certificati TLS.

Opzione 2: Kubernetes secret

Crea un secret di Kubernetes nello spazio dei nomi istio-system e aggiungi il nome del secret al file di override:

  1. Crea il secret:
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. Configura la proprietà virtualhosts nel file delle sostituzioni:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

Configurazione di mTLS

Anziché TLS unidirezionale, puoi configurare mTLS sul traffico in entrata di Istio. Sono disponibili due opzioni per configurare mTLS, come spiegato di seguito.

Opzione 1: coppia chiave/certificato e file CA

Fornisci un certificato CA (Certificate Authority) con file di chiave e certificato SSL nella proprietà virtualhosts nel file di override:

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

Dove $ENVIRONMENT_GROUP_NAME è il nome di un gruppo di ambienti con alias host corrispondenti, $CA_FILE è un certificato autorizzato e $CERT_FILE e $KEY_FILE sono i file della chiave e del certificato TLS. Vedi Creare certificati TLS.

Opzione 2: secret di Kubernetes

Crea due secret Kubernetes nello spazio dei nomi istio-system. Il primo secret è per la CA e il secondo per la coppia certificato/chiave SSL. Quindi, aggiungili al file delle sostituzioni.
  1. Crea due secret Kubernetes nello spazio dei nomi istio-system. Il primo secret è per la CA e il secondo per la coppia certificato/chiave SSL:
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. Crea un secret per la CA:
    kubectl create -n istio-system secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE
  3. Configura la proprietà virtualhosts nel file delle sostituzioni:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: MUTUAL  # Note: Be sure to specify MUTUAL
        sslSecret: $SECRET_NAME