Como configurar o TLS para API BaaS

Edge for Private Cloud v. 4.17.09

TLS (Transport Layer Security), cujo predecessor é o SSL, é a tecnologia de segurança padrão para garantir mensagens seguras e criptografadas em todo o seu ambiente de API. É possível configurar o TLS nos nós do portal de APIs BaaS e das APIs BaaS.

A imagem a seguir mostra um diagrama típico de implantação de API BaaS com um único portal BaaS e três nós de pilha de BaaS de API.

Os desenvolvedores usam um navegador para fazer solicitações ao portal. Por padrão, as solicitações usam o protocolo na porta 9000 do nó do portal.

Essa implantação inclui um balanceador de carga entre os nós do portal e da pilha. Neste configuração, o portal faz solicitações HTTP para o balanceador de carga, e o balanceador de carga encaminha as solicitações para um dos nós da pilha. Esta é a implantação recomendada para um sistema de produção.

Opções de configuração de TLS

Ao configurar o TLS para o BaaS de API, você tem várias opções:

  • Configurar o TLS no portal e no balanceador de carga para os nós de pilha

    Nesta configuração, os desenvolvedores usam o protocolo HTTPS para acessar o portal em execução no navegador usa HTTPS para fazer solicitações aos nós da pilha por meio da carga de carga. O balanceador de carga usa HTTP para acessar os nós da pilha.
  • Configurar o TLS no portal, no balanceador de carga e nos nós de pilha

    Para aumentar a segurança, configure o balanceador de carga para usar o TLS e acessar os nós da pilha.
  • Configurar o TLS no portal e em um único nó de pilha

    Em um ambiente pequeno, como em um ambiente de teste ou de desenvolvimento, você pode ter apenas um um único nó de pilha, o que significa que não é necessário incluir um balanceador de carga. Nessa configuração, configurar o TLS nos nós do portal e da pilha.
  • Configurar o TLS em um balanceador de carga para o portal

    Uma opção não mostrada acima é usar um balanceador de carga na frente do nó do portal. Nesse é possível configurar o TLS no balanceador de carga e, opcionalmente, no entre o balanceador de carga e o portal.
.

Verifique se a porta TLS está aberta

Os procedimentos abaixo configuram o TLS na porta 9000 do Portal padrão e no nó de pilha 8080. No entanto, você pode alterar essa porta se quiser.

Independentemente da porta usada, você precisa garantir que ela esteja aberta no nó. Para exemplo, use o seguinte comando para abrir a porta 8443:

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT --verbose

Como configurar o TLS na pilha de BaaS da API

Por padrão, o TLS está desativado para a pilha de BaaS de API. Em seguida, você vai acessar a API BaaS via HTTP usando o endereço IP ou o nome DNS do nó da pilha e a porta 8080. Exemplo:

http://stack_IP:8080

Como alternativa, é possível configurar o acesso TLS à API BaaS para acessá-la no formulário:

https://stack_IP:8080

Neste exemplo, você configura o acesso por TLS para usar a porta 8080. Mas a porta 8080 não é necessária É possível configurar a pilha para usar uma porta diferente. A única exigência é que as regras de firewall permite o tráfego pela porta especificada.

A pilha só oferece suporte a um tipo de solicitação (HTTP ou HTTPS) em uma única porta. Portanto, Se você configurar o acesso HTTPS na porta 8080, não será possível usar HTTP para acessar a porta 8080. Se você configurar a pilha para usar a porta 8443 com HTTPS, e ela não detectará mais a porta; 8080.

Use o procedimento a seguir para configurar o acesso TLS à pilha:

  1. Gere o arquivo JKS do keystore contendo sua certificação TLS e chave privada. Para mais consulte Como configurar TLS/SSL para o Edge ativado Locais.
    Observação: verifique se a senha no keystore e na chave são iguais.
  2. Copie o arquivo JKS do keystore para um diretório no nó da pilha, como /opt/apigee/customer/application. O diretório precisa ser acessível ao usuário da Apigee usuário.
  3. Mudar a propriedade do arquivo JKS para a 'apigee' usuário:
    > chown apigee:apigee /opt/apigee/customer/application/keystore.jks

    em que keystore.jks é o nome do arquivo do keystore.
  4. Edite o arquivo /opt/apigee/customer/application/usergrid.properties. para definir as seguintes propriedades, incluindo o caminho para o arquivo JKS e a senha em o keystore e a chave. Se esse arquivo não existir, crie-o:
    tomcat-server_scheme=https
    tomcat-server_secure=true
    tomcat-server_ssl.enabled=true
    tomcat-server_keystore.type=JKS
    tomcat-server_keystore.file=/opt/apigee/customer/application/keystore.jks
    tomcat-server_keystore.password=password
    tomcat-server_keyalias=keystore_alias
    tomcat-server_clientauth.enabled=false
    tomcat-server_ssl.protocols=TLSv1,TLSv1.1,TLSv1.2
    # Por padrão, o acesso TLS usa a porta 8080.
    # Use esta propriedade para especificar uma porta diferente.
    # tomcat-server_port=8080


    Aviso: o valor da password precisa estar em texto não criptografado. Portanto, você deve proteger usergrid.properties de acesso não autorizado acesso.

    Usar o tomcat-server_keyalias para especificar o alias do keystore. Você define o alias da chave no momento em que criou a chave. Por exemplo, você pode defini-la usando a opção -alias para o comando keytool.

    Use tomcat-server_ssl.protocols. para definir os protocolos TLS compatíveis com a pilha. Para conferir uma lista dos protocolos compatíveis com o Java 8, consulte http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#jssename.
  5. Configure o nó da pilha:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  6. Reinicie a pilha BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  7. Para confirmar se o TLS está funcionando, execute o comando cURL a seguir no nó da pilha usando: HTTPS:
    > curl -k https://localhost:8080/status -v

    Se o TLS estiver configurado corretamente, você verá uma resposta com informações de status.

    Se você configurou o acesso TLS por uma porta diferente da 8080, modifique o comando acima para usar a porta correta.
  8. Repita em todos os nós da pilha.
  9. Se você tiver um balanceador de carga na frente dos nós de pilha, configure o balanceador de carga para fazer solicitações aos nós de pilha por HTTPS. Consulte a documentação do Google Cloud para mais informações.

    Se o portal fizer solicitações diretas à pilha, configure-o para acessar a pilha por HTTPS, conforme descrito na próxima seção.
  10. Use o procedimento abaixo em "Configurar nós de pilha de BaaS de API para TLS na pilha ou no portal" para garantir que o nó da pilha tem os URLs TLS corretos ao gerar o usuário de resposta.

Como configurar o portal para acessar a pilha por TLS

O portal do BaaS em execução em um navegador funciona fazendo chamadas de API para a pilha do BaaS. Se você configurar a pilha BaaS para usar TLS, precisará configurar o portal para fazer essas chamadas por HTTPS.

Uma instalação de API BaaS normalmente é configurada para:

  • Usar um balanceador de carga entre os nós do portal e da pilha

    Configure o balanceador de carga para fazer solicitações aos nós de pilha por HTTPS. Consulte a documentação do balanceador de carga para mais informações.

    Nesta configuração, o portal pode acessar o balanceador de carga por HTTP ou HTTPS, dependendo como configurar o balanceador de carga. Se o balanceador de carga usar TLS, siga o procedimento abaixo para configurar o portal para fazer solicitações ao balanceador de carga de HTTPS;
  • Pedir para o portal fazer solicitações diretas à pilha

    Configure o portal para acessar a pilha por HTTPS, conforme descrito abaixo.

Use o procedimento a seguir para configurar o portal de APIs BaaS e fazer chamadas de API por HTTPS:

  1. Configure o acesso por TLS na pilha de BaaS, conforme descrito acima, ou no balanceador de carga da Nós de pilha, conforme descrito na documentação do seu balanceador de carga.
  2. Edite /opt/apigee/customer/application/portal.properties para definir a propriedade a seguir. Se esse arquivo não existir, crie-o:
    baas.portal.config.overrideUrl=https://stackIP:port

    Especifique como valor desta propriedade o endereço IP ou nome DNS e a porta do nó da pilha de API para uma instalação de nó único ou do balanceador de carga, se você tiver um balanceador de carga na frente de os nós da pilha de BaaS da API.
  3. Configure o nó do portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Reinicie o portal usando o comando:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal reiniciar
  5. Se você usou um certificado autoassinado ao configurar o acesso TLS à pilha acima, talvez o navegador não permita solicitações à pilha pelo portal. Se você vir erro no navegador informando que o acesso HTTPS à pilha não é permitido, solicite o seguinte URL no navegador e adicione uma exceção de segurança para permitir o acesso:
    https://stackIP:port/status

    Especifique o endereço IP ou o nome do DNS e a porta do nó da pilha de API ou do balanceador de carga.

Como configurar o TLS no portal da API BaaS

Por padrão, os usuários acessam o portal fazendo solicitações HTTP não criptografadas pela porta 9000 da Servidor do portal. É possível configurar o portal para usar HTTPS para criptografar os dados enviados e recebidos pelo no portal do Google Cloud.

Por padrão, você acessa o Portal por HTTP usando o endereço IP ou o nome DNS do portal e na porta 9000. Exemplo:

http://portal_IP:9000

Como alternativa, é possível configurar o acesso TLS ao Portal para que você possa acessá-lo na formulário:

https://portal_IP:9443

Neste exemplo, você configura o acesso por TLS para usar a porta 9443. No entanto, a porta 9443 não é necessária É possível configurar o portal para usar uma porta diferente.

O portal aceita apenas um tipo de solicitação (HTTP ou HTTPS) em uma única porta. Portanto, Se você configurar o acesso HTTPS na porta 9000, não será possível usar HTTP para acessá-la. Se você configurar o portal para usar a porta 9443 com HTTPS, e ele não escutará mais na porta; 9.000.

Para configurar o TLS para o portal:

  1. Crie um arquivo de chave e um arquivo de certificado no formato PEM.
    Observação: verifique se não há uma senha/senha na chave ou no certificado.
  2. Copie os arquivos PEM em um diretório no nó do portal, como /opt/apigee/customer/application. O diretório precisa ser acessível ao usuário da Apigee usuário.
  3. Mudar a propriedade dos arquivos PEM para a Apigee usuário:
    > chown apigee:apigee /opt/apigee/customer/application/*.PEM
  4. Edite o arquivo /opt/apigee/customer/application/portal.properties para definir as seguintes propriedades. Se esse arquivo não existir, crie-o:
    baas.portal.ssl=on
    baas.portal.ssl.certificate=/opt/apigee/customer/application/defaultcert.pem
    baas.portal.ssl.key=/opt/apigee/customer/application/defaultkey.pem
    baas.portal.ssl.protocols=TLSv1 TLSv1.1 TLSv1.2
    # Por padrão, o acesso TLS usa a porta 9000.
    # Use esta propriedade para especificar uma porta diferente.
    # baas.portal.listen=9000


    Usar baas.portal.ssl.protocols para definir os protocolos TLS aceitos pelo portal. Para uma lista de protocolos compatíveis, consulte a Lista de nomes de protocolo SSL definidos pelo Nginx: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols.
  5. Configure o nó do portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  6. Reinicie o portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal reiniciar
  7. Use o procedimento abaixo em "Configurar nós de pilha de BaaS de API para TLS na pilha ou no portal" para garantir que o nó da pilha tem o URL TLS correto para o portal.

Configure nós do BaaS de API para TLS na Pilha ou portal

Se você incluir um balanceador de carga na frente dos nós de pilha ou portal ou se ativar o TLS diretamente no nó do portal ou da pilha, configure os nós com os URLs corretos para acessar a pilha e o portal. Por exemplo, os nós da pilha exigem essas informações quando:

  • Incluir um URL nas respostas de solicitações da API BaaS.
  • Adicionar links em modelos de e-mail ao redefinir uma senha ou enviar outros notificações.
  • redirecionamento de usuários para páginas específicas do portal

Se você usar um balanceador de carga na frente dos nós de pilha ou configurar o TLS no nó de pilha, defina a seguinte propriedade em /opt/apigee/customer/application/usergrid.properties:

usergrid-deployment_usergrid.api.url.base=http://localhost:8080

Substitua http://localhost:8080 pelo URL da carga. de carga. Se o balanceador de carga estiver configurado para usar TLS, utilize o protocolo HTTPS. Você só precisa incluir a porta se estiver usando uma porta não padrão, ou seja, algo diferente da porta. 80 para HTTP e porta 443 para HTTPS.

Também é preciso definir a seguinte propriedade em /opt/apigee/customer/application/portal.properties se use um balanceador de carga na frente dos nós da pilha:

baas.portal.config.overrideUrl=http://localhost:8080

Substitua http://localhost:8080 pelo URL da de carga HTTP(S) externo global para a pilha.

Se você usar um balanceador de carga na frente do nó do portal ou configurar o TLS no nó "Stack", defina as seguintes propriedades em usergrid.properties:

usergrid-deployment_portal.url=http://localhost:9000

Substitua http://localhost:9000 pelo URL do de carga HTTP(S) externo global. Se o balanceador de carga estiver configurado para usar TLS, utilize o protocolo HTTPS. Você só precisa incluir a porta se estiver usando uma porta não padrão, ou seja, algo diferente porta 80 para HTTP e porta 443 para HTTPS.

Depois de editar usergrid.properties:

  1. Configure o nó da pilha:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. Reinicie a pilha BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  3. Se você modificou portal.properties, configure nó do portal:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
  4. Reinicie o portal do BaaS:
    > /opt/apigee/apigee-service/bin/apigee-service baas-portal reiniciar