Como configurar o TLS e o mTLS na entrada do Istio

Neste tópico, você verá como habilitar o TLS só de ida e mTLS na entrada do Istio.

Como configurar o TLS unidirecional

Use o TLS unidirecional para proteger os endpoints de proxy da API na entrada do Istio. Para ativar o TLS unidirecional, configure a entrada com pares de certificado/chave TLS ou com um secret do Kubernetes, conforme explicado nas opções a seguir.

Opção 1: par de chave/certificado

Forneça arquivos de certificado e chave SSL na propriedade virtualhosts no seu arquivo de modificações:

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

Em que $ENVIRONMENT_GROUP_NAME é o nome de um grupo de ambientes com aliases de host correspondentes, e $CERT_FILE e $KEY_FILE são arquivos de chave e certificado TLS. Consulte Criar certificados TLS.

Opção 2: secret do Kubernetes

Crie um secret do Kubernetes no namespace istio-system e adicione o nome do secret ao arquivo de modificações:

  1. Criar 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 arquivo de modificações:
    virtualhosts:
      - name: $ENVIRONMENT_GROUP_NAME
        tlsMode: SIMPLE  # Note: SIMPLE is the default, so it is optional.
        sslSecret: $SECRET_NAME

Como configurar o mTLS

Em vez do TLS unidirecional, é possível configurar o mTLS na entrada do Istio. Há duas opções para configurar o mTLS, conforme explicado abaixo.

Opção 1: par de chave/certificado e arquivo CA

Forneça um certificado da autoridade de certificação (CA, na sigla em inglês) com o certificado SSL e os arquivos de chave na propriedade virtualhosts no arquivo de modificação:

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

Em que $ENVIRONMENT_GROUP_NAME é o nome de um grupo de ambiente com aliases de host correspondentes, $CA_FILE é um certificado autorizado e $CERT_FILE e $KEY_FILE são arquivos de chave e certificado TLS. Consulte Criar certificados TLS.

Opção 2: secrets do Kubernetes

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