Configurar TLS e mTLS na entrada do Istio

Este tópico explica como ativar o TLS unidirecional e o mTLS na entrada do Istio.

Configurar TLS unidirecional

Use o TLS unidirecional para proteger os pontos finais do proxy da API na entrada do Istio. Para ativar o TLS unidirecional, configure a entrada com pares de chaves/certificados TLS ou com um segredo do Kubernetes, conforme explicado nas opções seguintes.

Opção 1: par de chaves/certificados

Forneça os ficheiros de chave e certificado SSL na propriedade virtualhosts no ficheiro de substituições:

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

Onde $ENVIRONMENT_GROUP_NAME é o nome de um grupo de ambientes com alias de anfitriões correspondentes, e $CERT_FILE e $KEY_FILE são ficheiros de certificado e chave TLS. Consulte o artigo Crie certificados TLS.

Opção 2: segredo do Kubernetes

Crie um Kubernetes Secret no espaço de nomes istio-system e adicione o nome do segredo ao ficheiro de substituições:

  1. Crie o Secret:
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. Configure a propriedade virtualhosts no ficheiro de substituições:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

Configurar mTLS

Em vez do TLS unidirecional, pode configurar o mTLS na entrada do Istio. Existem duas opções para configurar o mTLS, conforme explicado abaixo.

Opção 1: par de chaves/certificados e ficheiro de CA

Faculte um certificado de autoridade de certificação (AC) com ficheiros de chave e certificado SSL na propriedade virtualhosts no ficheiro de substituições:

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

Onde $ENVIRONMENT_GROUP_NAME é o nome de um grupo de ambientes com alias de anfitriões correspondentes, $CA_FILE é um certificado autorizado e $CERT_FILE e $KEY_FILE são ficheiros de chave e certificado TLS. Consulte o artigo Crie certificados TLS.

Opção 2: segredos do Kubernetes

Crie dois segredos do Kubernetes no espaço de nomes istio-system. O primeiro segredo destina-se ao par de chaves/certificado SSL e o segundo destina-se à AC. Em seguida, adicione-os ao ficheiro de substituições.
  1. Crie dois segredos do Kubernetes no espaço de nomes istio-system
    kubectl create -n istio-system secret generic $SECRET_NAME  \
    --from-file=key=$KEY_FILE \
    --from-file=cert=$CERT_FILE
  2. Crie um segredo para a CA:
    kubectl create -n istio-system secret generic $SECRET_NAME-cacert  \
    --from-file=cacert=$CA_FILE
  3. Configure a propriedade virtualhosts no ficheiro de substituições:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: MUTUAL  # Note: Be sure to specify MUTUAL
        sslSecret: $SECRET_NAME