Configurazione di TLS e mTLS sul gateway in entrata Istio

Questo argomento spiega come attivare TLS e mTLS unidirezionali sul gateway in entrata Istio.

Configurazione di TLS unidirezionale

Utilizza TLS unidirezionale per proteggere gli endpoint del proxy API sul traffico Istio in entrata. Per attivare con TLS unidirezionale, puoi configurare il traffico in entrata con coppie di certificati/chiavi TLS o Secret, come spiegato nelle opzioni seguenti.

Opzione 1: coppia chiave/certificata

Fornisci il certificato SSL e i file della chiave nella proprietà virtualhosts nel file degli override:

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

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

Opzione 2: secret Kubernetes

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

  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 di override:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

Configurazione di mTLS

Invece di TLS unidirezionale, puoi configurare mTLS sul traffico Istio in entrata. Esistono due metodi per configurare mTLS, come spiegato di seguito.

Opzione 1: coppia chiave/certificato e file CA

Fornisci un certificato dell'autorità di certificazione (CA) con i file della chiave e del certificato SSL nella proprietà virtualhosts del file delle sostituzioni:

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 gli 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: Kubernetes Secrets

Crea due secret Kubernetes in istio-system nello spazio dei nomi. Il primo segreto è per la coppia chiave/certificato SSL e il secondo per la CA. e aggiungili al file degli override.
  1. Crea due secret Kubernetes nello spazio dei nomi istio-system:
    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