Configurar o mTLS da Apigee

Depois de instalar o mTLS da Apigee em todos os nós no cluster, configure e inicialize o componente apigee-mtls. Para isso, gere um par de certificados/chaves e atualize o arquivo de configuração na máquina de administração. Em seguida, você implanta os mesmos arquivos gerados e de configuração em todos os nós no cluster e inicializa o componente apigee-mtls local.

Configurar apigee-mtls (após a instalação inicial)

Nesta seção, descrevemos como configurar o mTLS da Apigee diretamente após a instalação inicial. Para informações sobre como atualizar uma instalação atual do Apigee mTLS, consulte Alterar uma configuração atual da apigee-mtls.

Esta seção se aplica a instalações em um único data center. Para informações sobre como configurar o mTLS da Apigee em uma configuração de vários data centers, consulte Configurar vários data centers para o mTLS da Apigee.

O processo geral de configuração do apigee-mtls é o seguinte:

  1. Atualize o arquivo de configuração: na máquina de administração, atualize o arquivo de configuração para incluir as configurações apigee-mtls.
  2. Instalar o Consul e gerar credenciais: instale o Consul e (opcionalmente) use-o para gerar credenciais TLS (apenas uma vez).

    Além disso, edite o arquivo de configuração mTLS da Apigee para:

    1. Adicionar as informações de credenciais
    2. Definir a topologia do cluster

    É possível usar suas credenciais atuais ou gerá-las com o Consul.

  3. Distribua as credenciais e o arquivo de configuração: distribua o mesmo par de certificado/chave gerado e o arquivo de configuração atualizado a todos os nós do cluster.
  4. Inicializar apigee-mtls: inicialize o componente apigee-mtls em cada nó.

Cada uma dessas etapas é descrita nas seções a seguir.

Etapa 1: atualizar o arquivo de configuração

Esta seção descreve como modificar seu arquivo de configuração para incluir propriedades de configuração mTLS. Para mais informações gerais sobre o arquivo de configuração, consulte Como criar um arquivo de configuração.

Depois de atualizar o arquivo de configuração com as propriedades relacionadas à mTLS, copie-o para todos os nós no cluster antes de inicializar o componente apigee-mtls nesses nós.

Para atualizar o arquivo de configuração:

  1. No computador de administração, abra o arquivo de configuração para edição.
  2. Copie o seguinte conjunto de propriedades de configuração de mTLS e cole no arquivo de configuração:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"
    TLS_MIN_VERSION="tls12"
    TLS_CIPHER_SUITES="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
    

    Defina o valor de cada propriedade de acordo com sua configuração.

    A tabela a seguir descreve essas propriedades de configuração:

    Propriedade Descrição
    ALL_IP Uma lista separada por espaços dos endereços IP de host particular de todos os nós no cluster.

    A ordem dos endereços IP não importa, mas precisa ser a mesma em todos os arquivos de configuração no cluster.

    Se você configurar o mTLS da Apigee para vários data centers, liste todos os endereços IP de todos os hosts em todas as regiões.

    LDAP_MTLS_HOSTS O endereço IP do host particular do nó do OpenLDAP no cluster.
    ZK_MTLS_HOSTS

    Uma lista separada por espaços de endereços IP de host particular em que os nós do ZooKeeper estão hospedados no cluster.

    Observe que, com base nos requisitos, é preciso haver pelo menos três nós do ZooKeeper.

    CASS_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particular em que os servidores do Cassandra estão hospedados no cluster.
    PG_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particular em que os servidores do Postgres estão hospedados no cluster.
    RT_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particular em que os roteadores estão hospedados no cluster.
    MTLS_ENCAPSULATE_LDAP Criptografa tráfego LDAP entre o processador de mensagens e o servidor LDAP. Defina como y.
    MS_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particulares em que os nós do servidor de gerenciamento estão hospedados no cluster.
    MP_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particulares em que os processadores de mensagens estão hospedados no cluster.
    QP_MTLS_HOSTS Uma lista separada por espaços de endereços IP de host particular em que os servidores Qpid estão hospedados no cluster.
    ENABLE_SIDECAR_PROXY Determina se o Cassandra e o Postgres devem reconhecer a malha de serviço.

    Você deve definir esse valor como "y".

    ENCRYPT_DATA A chave de criptografia codificada em base64 usada pelo Consul. Você gerou essa chave usando o comando consul keygen na Etapa 2: instalar o Consul e gerar credenciais.

    Esse valor precisa ser o mesmo em todos os nós do cluster.

    PATH_TO_CA_CERT O local do arquivo de certificado no nó. Você gerou esse arquivo na Etapa 2: instalar o Consul e gerar credenciais.

    Esse local precisa ser o mesmo em todos os nós do cluster para que os arquivos de configuração sejam os mesmos.

    O certificado precisa ser codificado em X509v3.

    PATH_TO_CA_KEY O local do arquivo de chave no nó. Você gerou esse arquivo na Etapa 2: instalar o Consul e gerar credenciais.

    Esse local precisa ser o mesmo em todos os nós do cluster para que os arquivos de configuração sejam os mesmos.

    O arquivo de chave precisa ser codificado em X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    O número de dias em que um certificado é válido quando você gera um certificado personalizado.

    O valor padrão é 365. O valor máximo é de 7.865 dias (5 anos).

    TLS_MIN_VERSION Especifica a versão de TLS mínima permitida. Defina como tls12 para aplicar o mínimo de TLS 1.2.
    TLS_CIPHER_SUITES Uma lista separada por vírgulas de pacotes de criptografia TLS permitidos.

    Exemplo: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    Além das propriedades listadas acima, o mTLS da Apigee usa várias outras propriedades quando você o instala em uma configuração de vários data centers. Para mais informações, acesse Configurar vários data centers.

  3. Confira se ENABLE_SIDECAR_PROXY está definido como "y".
  4. Atualize os endereços IP nas propriedades relacionadas ao host. Ao se referir a cada nó, use os endereços IP privados, não os endereços IP públicos.

    Nas etapas posteriores, você definirá os valores de outras propriedades, como ENCRYPT_DATA, PATH_TO_CA_CERT e PATH_TO_CA_KEY. Você ainda não define os valores deles.

    Ao editar as propriedades de configuração do apigee-mtls, observe o seguinte:

    • Todas as propriedades são strings. Coloque os valores de todas as propriedades em aspas simples ou duplas.
    • Se um valor relacionado ao host tiver mais de um endereço IP particular, separe cada endereço IP com um espaço.
    • Use endereços IP particulares, e não nomes de host ou endereços IP públicos para todas as propriedades relacionadas ao host no arquivo de configuração.
    • A ordem dos endereços IP em um valor de propriedade precisa estar na mesma ordem em todos os arquivos de configuração no cluster.
  5. Salve suas alterações no arquivo de configuração.

Etapa 2: instalar o Consul e gerar credenciais

Esta seção descreve como instalar o Consul e gerar as credenciais usadas pelos componentes habilitados para mTLS.

Escolha um dos seguintes métodos para gerar as credenciais:

  • (Recomendado) Crie sua própria autoridade de certificação (CA) usando o Consul, conforme descrito nesta seção
  • Usar as credenciais de uma AC atual com o mTLS da Apigee (avançado)

Sobre as credenciais

As credenciais consistem no seguinte:

  • Certificado:o certificado TLS
  • Chave:a chave pública TLS.
  • Mensagem de fofoca:uma chave de criptografia codificada em base64.

Você gera uma única versão de cada um desses arquivos apenas uma vez. Em seguida, copie os arquivos de chave e certificado para todos os nós no cluster e adicione a chave de criptografia ao arquivo de configuração, que também é copiada para todos os nós.

Para mais informações sobre a implementação da criptografia do Consul, acesse:

Instalar o Consul e gerar credenciais

Para gerar credenciais que o mTLS da Apigee usa para autenticar comunicações seguras entre os nós no cluster de nuvem privada, use um binário do Consul local . Como resultado, você precisa instalar o Consul na sua máquina de administração antes de poder gerar credenciais.

Para instalar o Consul e gerar credenciais mTLS:

  1. Na máquina de administração, faça o download do binário do Consul 1.8.0 no site da HashiCorp.
  2. Extraia o conteúdo do arquivo transferido por download. Por exemplo, extraia o conteúdo para /opt/consul/.
  3. Na máquina de administração, crie uma nova autoridade certificadora (CA) executando o seguinte comando:
    /opt/consul/consul tls ca create

    O Consul cria os seguintes arquivos, que formam um par de certificado/chave:

    • consul-agent-ca.pem (certificado)
    • consul-agent-ca-key.pem (chave)

    Por padrão, os arquivos de certificado e de chave são codificados em X509v3.

    Depois, você copiará esses arquivos para todos os nós no cluster. No entanto, agora você precisa decidir apenas onde colocará esses arquivos nos nós. Eles precisam estar no mesmo local em cada nó. Por exemplo, /opt/apigee/.

  4. No arquivo de configuração, defina o valor de PATH_TO_CA_CERT como o local para onde você copiará o arquivo consul-agent-ca.pem no nó. Por exemplo:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Defina o valor de PATH_TO_CA_KEY como o local para onde você copiará o arquivo consul-agent-ca-key.pem no nó. Por exemplo:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. Crie uma chave de criptografia para o Consul executando o seguinte comando:
    /opt/consul/consul keygen

    O Consul gera uma string aleatória, parecida com esta:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Copie essa string gerada e a defina como o valor da propriedade ENCRYPT_DATA no arquivo de configuração. Por exemplo:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. Salve o arquivo de configuração.

O exemplo a seguir mostra as configurações relacionadas ao mTLS em um arquivo de configuração (com valores de exemplo):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

Etapa 3: distribuir o arquivo de configuração e as credenciais

Copie os arquivos a seguir para todos os nós usando uma ferramenta como scp:

  • Arquivo de configuração: copie a versão atualizada desse arquivo e substitua a versão atual em todos os nós (não apenas nos que estão executando o ZooKeeper).
  • consul-agent-ca.pem::copie para o local especificado como o valor de PATH_TO_CA_CERT no arquivo de configuração.
  • consul-agent-ca-key.pem::copie para o local especificado como o valor de PATH_TO_CA_KEY no arquivo de configuração.

Verifique se os locais onde serão copiados os arquivos de certificado e chave correspondem aos valores definidos no arquivo de configuração na Etapa 2: instalar o Consul e gerar credenciais.

Etapa 4: inicializar a Apigee-mtls

Depois de instalar apigee-mtls em cada nó, atualizar o arquivo de configuração e copiá-lo e as credenciais para todos os nós no cluster, você já pode inicializar o componente apigee-mtls em cada nó.

Para inicializar apigee-mtls:

  1. Faça login em um nó do cluster como usuário raiz. É possível executar essas etapas nos nós em qualquer ordem que você quiser.
  2. Torne o usuário apigee:apigee um proprietário do arquivo de configuração atualizado, conforme o exemplo a seguir:
    chown apigee:apigee config_file
  3. Configure o componente apigee-mtls executando o seguinte comando:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (Opcional) Execute o seguinte comando para verificar se a configuração foi concluída:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Inicie o mTLS da Apigee executando o seguinte comando:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    Depois de instalar o mTLS da Apigee, inicie esse componente antes de qualquer outro componente no nó.

  6. (Somente nós do Cassandra) O Cassandra exige outros argumentos para funcionar na malha de segurança. Como resultado, é preciso executar os seguintes comandos em cada nó do Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Somente nós do Postgres) O Postgres requer argumentos adicionais para funcionar dentro da malha de segurança. Como resultado, faça o seguinte nos nós do Postgres:

    (Apenas principais)

    1. Execute os seguintes comandos no nó principal do Postgres:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (Apenas em espera)

    1. Faça backup dos seus dados do Postgres. Para instalar o mTLS da Apigee, é necessário reinicializar os nós principais/em espera. Portanto, haverá perda de dados. Para mais informações, consulte Configurar a replicação primária/em espera para o Postgres.
    2. Excluir todos os dados do Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Configure e reinicie o Postgres, conforme o exemplo a seguir:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    Se você estiver instalando em uma topologia de vários data centers, use um caminho absoluto para o arquivo de configuração.

  8. Inicie os componentes restantes da Apigee no nó na ordem de início, conforme o exemplo a seguir:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. Repita esse processo para cada nó do cluster.
  10. (Opcional) Verifique se a inicialização de apigee-mtls foi bem-sucedida usando um ou mais dos seguintes métodos:
    1. Validar a configuração do iptables
    2. Verificar o status do proxy remoto
    3. Verificar o status de quórum

    Todos esses métodos são descritos em Verificar a configuração.

Alterar uma configuração atual da apigee-mtls

Para personalizar uma configuração do apigee-mtls, desinstale e reinstale o apigee-mtls. Você também precisa aplicar a personalização em todos os nós.

Para reforçar esse ponto, ao alterar uma configuração mTLS da Apigee:

  • Se você mudar um arquivo de configuração, primeiro desinstale o apigee-mtls e execute setup ou configure novamente:
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • É preciso desinstalar e executar novamente setup ou configure em todos os nós do cluster, não apenas em um.