Nota:
Esta página foi revisada para considerar as configurações do TOTVS Fluig Plataforma na atualização 1.6.5 - Liquid ou superior.
Caso possua uma atualização 1.6.4 - Waterdrop ou inferior, acesse: Configuração HTTPS da release 1.6.0 a 1.6.4.
Plataforma em Cloud
Clientes cloud precisam entrar em contato com o time de Cloud para que eles realizem esse procedimento.
Dica!
Caso encontre dificuldades para cadastrar o serviço, essa documentação pode lhe ajudar: Resolução de inconsistência (PKIX path validation failed) ao cadastrar serviço.
Objetivo
O objetivo deste guia é apresentar os passos necessários para utilização do TOTVS Fluig Plataforma com o protocolo HTTPS.
Pré-requisitos
- Possuir um certificado digital válido;
- Ter um host no DNS configurado para a plataforma em um domínio específico.
Obter um certificado válido
Para o certificado ser válido para a internet, este deve ser emitido para um domínio específico (WildCard) ou para um host deste domínio, o que torna obrigatório configurar a plataforma com o mesmo domínio do certificado caso deseje o uso de HTTPS (ex: *.suaempresa.com.br).
Nota:
Se o certificado for vinculado ao Fluig e o acesso continuar sendo via IP (e não pelo domínio), constantes mensagens de certificado não confiável serão apresentadas, pois o navegador tentará validar a URL de acesso com o domínio do certificado, retornando erro.
Caso sua empresa ainda não possua nenhum certificado, o mesmo deve ser adquirido de uma autoridade certificadora. Não é recomendado o uso de certificados self-signed (auto-assinado), já que alguns navegadores não aceitam este tipo de certificado e podem provocar comportamentos inesperados durante a utilização da plataforma.
Dicas!
- Uma alternativa gratuita é oferecida pela Linux Foundation através do site Let's Encrypt. Saiba mais acessando a documentação Certificado HTTPS (SSL/TLS) Gratuito.
- Caso tenha dúvidas sobre os procedimentos realizados no OpenSSL, consulte a documentação Utilizando OpenSSL para configurar HTTPS.
- Você também pode conferir se sua configuração HTTPS está funcionando corretamente, através da ferramenta: https://www.sslshopper.com/ssl-checker.html
Configuração de HTTPS pelo wcmadmin
A partir da atualização Crystal Lake (1.7.1), a configuração de HTTPS pode ser realizada diretamente pelo Painel de controle da plataforma, para isso é necessário seguir os passos abaixo.
- Acessar a plataforma com o usuário wcmadmin.
- No menu principal, acionar Painel de Controle, logo depois verificar o agrupador WCM e acionar Configurações do sistema.
- Na aba Portal, marcar a opção HTTPS no campo Protocolo.
Será apresentada uma mensagem informando que, ao alterar o protocolo para HTTPS, será necessário configurá-lo.
- Acionar Configurar para prosseguir com a configuração em tela.
- Selecionar no campo Plataforma como será configurado o protocolo HTTPS. As opções são: Apache, Nginx ou TOTVS Fluig Plataforma.
A opção Apache ou Nginx é utilizada quando a plataforma é configurada através de um proxy reverso. Sempre recomendamos configurar um ambiente distribuído (com topologia DMZ) para reforçar a segurança de seu ambiente. Para mais detalhes consulte a documentação de Configuração de Proxy Reverso.
- Configurar o certificado digital de acordo com a opção escolhida:
TOTVS Fluig Plataforma
Preencha os campos abaixo:
- Certificado
Selecione o certificado digital que será utilizado para estabelecer a conexão segura da plataforma. Os formatos de arquivos permitidos são: .p12 e .pfx - Senha
Informe a senha do certificado digital para estabelecer a conexão segura da plataforma. - Caminho da chave
Informe o caminho completo (com extensão), da chave privada do certificado para estabelecer a conexão segura da plataforma.
Apache ou Nginx
Primeiramente, preencha os campos abaixo:
- Caminho do certificado
Informe o caminho completo (com extensão .crt, .pem ou .p12), do certificado digital gerado para estabelecer a conexão segura da plataforma. - Caminho da chave
Informe o caminho completo (com extensão .key ou .pem), da chave privada do certificado para estabelecer a conexão segura da plataforma.
Após isso, acione a opção Gerar arquivo para gerar um template com as configurações HTTPS.
Por último, baixe o arquivo gerado e utilize para finalizar a configuração na plataforma selecionada (Nginx ou Apache).
- Acionar Salvar.
Serão realizadas algumas verificações, para validar se o certificado está correto, se a senha informada corresponde ao certificado, entre outras. Se estiver tudo certo, a plataforma realiza as alterações necessárias para concluir a configuração. Ao final, será apresentada a mensagem de sucesso.
- Reiniciar os serviços da plataforma.
Após configurar o HTTPS na instalação da plataforma, é recomendável conferir se está funcionando corretamente. O teste pode ser feito através da ferramenta SSL Checker.
Com a configuração, será possível acessar também o aplicativo Fluig Mobile com HTTPS, sem necessidade de configurações adicionais.
Configuração de HTTPS manual
Caso opte por fazer a configuração manual ou esteja em uma atualização anterior a 1.7.1, os procedimentos de configuração de SSL devem ser realizados conforme os passos abaixo:
Observação interna:
A explicação abaixo foi repassada ao artigo: https://centraldeatendimento.fluig.com/hc/pt-br/articles/360027390832 (Como configurar a plataforma com o protocolo HTTPS)
Caso tenha alguma alteração, lembrar de repassar a esse artigo!
- Parar os serviços do Fluig (fluig, fluig_indexer, fluig_RealTime e cache, caso estiver utilizando cache externo e.g: MemCached ou redis).
- No arquivo domain.xml, localizado em [Instalação Fluig]/appserver/domain/configuration, incluir a tag <https-listener> no subsystem "undertow". Não deve ser retirada a tag contendo as configurações HTTP.
- Na tag HTTP, acrescente o atributo proxy-address-forwarding="true" conforme mostrado abaixo:
Caso deseje restringir o tráfego de cookie de sessão em conexões seguras (HTTPS), basta incluir nas configurações do subsystem undertow a tag session-cookie informando o atributo secure ="true". (Opcional)
Dica!
A partir da atualização Crystal Lake (1.7.1), é possível habilitar a opção Flags "HttpOnly" e "Secure" nos cookies nas Configurações do sistema, não sendo mais necessário definir essa configuração manualmente.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> <...> <server name="default-server"> <http-listener max-post-size="1073741824" name="default" socket-binding="http" proxy-address-forwarding="true"/> <!-- 2- Adicionar nesta linha o atributo --> <https-listener max-post-size="1073741824" name="https" secure="true" security-realm="TOTVSTech" socket-binding="https"/> <!-- 1- Incluir esta linha para validacao do certificado --> <...> </server> <servlet-container name="default" stack-trace-on-error="local-only"> <...> <session-cookie http-only="true" secure="true"/> <!-- 3- Incluir esta linha para restringir o trafego de cookie de sessao --> </servlet-container> <...> </subsystem>
- A partir da atualização 1.7.0 (Lake), a tag <security-realm> não existirá mais, porém pode ser incluída conforme desejo do usuário em habilitar o uso do HTTPS. Nesse caso, será preciso procurar a tag <security-realm> no arquivo host.xml.
- Incluir a tag <server-identities></server-identities> juntamente com <ssl> e o <keystore> conforme exemplicado no código abaixo;
- No atributo path, informe o diretório do repositório de certificados (keystore.p12).
- Em key-password e keystore-password, substitua a valor "suasenha" pela senha utilizada na criação do repositório de certificados (keystore).
Importante!
Em <security-realm name="ApplicationRealm"> também contém as configurações de certificado porém, suas informações não devem ser modificadas, deixando os valores padrões salvos.
<security-realm name="TOTVSTech"> <server-identities> <ssl> <keystore path="certs\fluig.p12" keystore-password="suasenha" key-password="suasenha" /> </ssl> </server-identities> </security-realm>
Dica!
O diretório "certs" se refere à pasta onde os certificados são guardados. Recomendamos que esse diretório seja criado dentro do volume, para evitar que, em uma atualização ou migração de tecnologia, a pasta seja afetada.
Dúvidas sobre a utilização do OpenSSL ou sobre os comandos de exportação do PKCS12 (p12), consulte a documentação Utilizando OpenSSL para configurar HTTPS.
- Iniciar novamente os serviços do Fluig em sua ordem correta (cache, caso estiver utilizando cache externo e.g: MemCached ou redis, fluig_indexer, fluig_RealTime e fluig).
- O acesso será realizado via HTTPS, na porta 8443.
- Após configurar o HTTPS na instalação do TOTVS Fluig Plataforma, é necessário ajustar o domínio de acesso com o novo protocolo.
- Para isto, será necessário acessar a plataforma com o usuário wcmadmin, e nas configurações do sistema, na aba Portal, alterar o Protocolo para HTTPS. Caso não esteja utilizando um web server, é necessário também informar a Porta de acesso do servidor da plataforma. Para mais informações, consulte a documentação Gerenciar configurações do sistema.
Importante!
É recomendável revisar o limite de tempo das requisições lentas, como forma de trazer mais segurança à plataforma. Acesse a documentação de Prevenção de ataques DDoS Slow Post e Slow Headers e saiba mais.
Configurações adicionais
Configuração para utilização do Fluig Studio com SSL
A alteração abaixo é necessária para o correto funcionamento do plugin Fluig Studio no TOTVS Developer Studio ou Eclipse quando o SSL está habilitado.
- No diretório em que o Fluig Studio foi instalado, editar o arquivo eclipse.ini;
- Adicione a linha abaixo no final do arquivo.
-Djsse.enableSNIExtension=false
- Para chamadas de Web Service é importante configurar o arquivo de configuração domain.xml localizado em [Instalação Fluig]/appserver/domain/configuration.
- Procurar o trecho abaixo:
... <subsystem xmlns="urn:jboss:domain:webservices:2.0"> <modify-wsdl-address>true</modify-wsdl-address> <wsdl-host>10.80.73.203</wsdl-host> <endpoint-config name="Standard-Endpoint-Config"/> ...
- Alterar para:
... <subsystem xmlns="urn:jboss:domain:webservices:2.0"> <modify-wsdl-address>true</modify-wsdl-address> <wsdl-host>jbossws.undefined.host</wsdl-host> <wsdl-uri-scheme>https</wsdl-uri-scheme> <wsdl-secure-port>443</wsdl-secure-port> <endpoint-config name="Standard-Endpoint-Config"/> ...
Importante!
Alterar a porta da tag "<wsdl-secure-port>443</wsdl-secure-port>" para a porta de acesso utilizada (Portas padrões 443 e 8443).
Configurar notificações em tempo real
O serviço responsável pelas notificações em tempo real (entrega de dados do servidor para os clientes) também deve ser preparado para funcionar via HTTPS, quando essa configuração for realizada.
Importante!
- Não é permitido utilizar barra invertida ou contra barras "\" para informar os caminhos do certificado e chave privada no arquivo package.json. Caso for utilizada, o serviço de RealTime (Node) não irá subir.
- Caso o certificado possua uma senha na chave informada, é necessário remover a senha. Caso contrário, o Node.js não será iniciado.
- Se o servidor possuir proxy, é necessário liberar as portas do serviço de notificações em tempo real para SSL nesse proxy.
- Caso seu certificado e chave estiverem no formato de repositório de certificados PKCS12 (p12), consulte a documentação Utilizando OpenSSL para configurar HTTPS para obter os comandos de exportação dos mesmos. Para isso, é preciso que o pacote OpenSSL esteja instalado no servidor.
- Importante mencionar que a linha que contém a porta nas configurações do SSL no arquivo package.json deve ser apagada.
Para isso, o arquivo [Instalação node]/fluig.rt/package.json deve ser editado, alterando as seguintes informações abaixo. Em sistemas operacionais Linux, o arquivo package.json fica localizado em [Instalação node]/bin/fluig.rt/.
"ssl" : { "usessl": true, "key": "c:/fluig/certificado/server.key", "cert": "c:/fluig/certificado/server.crt", "ca": "c:/fluig/certificado/server.crt" }
Os atributos devem ser alterados conforme abaixo:
Atributo | Descrição |
usessl | Informar true, para caracterizar a utilização de configuração HTTPS. |
key | Informar o caminho do arquivo de chave. |
cert | Informar o caminho do arquivo de certificado. |
ca | Informar o caminho do arquivo de certificado. |
passphrase | Esse parâmetro não é obrigatório. Caso tenha sido usada uma senha para geração do certificado, pode ser necessário adicionar esse parâmetro indicando a senha. |
Após a alteração do package.json, o serviço RealTime (Node.js) deve ser reiniciado.
Certificado digital mobile
As plataformas de dispositivos móveis (iOS, Android) possuem limitações com relação aos certificados digitais. Por padrão, apenas o certificados homologados por elas são reconhecidos como confiáveis.
Para evitar a aquisição de certificados não homologados, é preciso consultar a documentação técnica de cada plataforma sobre a lista de certificados reconhecidos como confiáveis:
Plataforma | Como consultar |
---|---|
iOS | A lista de certificados confiáveis para o iOS está disponível aqui. |
Android | É necessário verificar no aparelho em: Configurações > Segurança > Credenciais Confiáveis Na Aba Sistema existe a lista de certificados confiáveis para aquela versão do Android. Importante! Cada versão do Android pode ter uma lista de certificados confiáveis diferente. |
A explicação acima foi repassada ao artigo: https://centraldeatendimento.fluig.com/hc/pt-br/articles/360034474534 (Erro ao informar o servidor no Android)
Caso tenha alguma alteração, lembrar de repassar a esse artigo!
Em caso de dúvidas, procure a unidade certificadora para assegurar que seu certificado é homologado pelas plataformas mencionadas acima.
Importante!
Caso o seu certificado não esteja na lista dos homologados, realize o procedimento descrito no item Procedimentos de configuração de SSL, mas lembre-se de que o arquivo .p12 que você utilizar deve conter também o certificado intermediário. Para gerar o arquivo .p12 com todos os certificados juntos siga esses passos:
Importante!