Atenção
Esta página foi revisada para considerar as configurações de server do TOTVS Fluig Plataforma a partir da atualização 1.6.
Índice
Objetivo
O objetivo deste artigo é descrever os procedimentos necessários para definir o nível de segurança aplicado ao protocolo SSL/TLS em ambientes que possuem o HTTPS habilitado.
Pré-requisitos
Para que se tenha uma compreensão completa destas informações, alguns conhecimentos são considerados pré-requisitos, entre eles:
- Visão geral sobre a plataforma TOTVS Fluig
- Visão geral sobre níveis de segurança e certificado digital
Além disso, é necessário acesso ao servidor onde a plataforma está instalada.
Níveis de Segurança
O mercado adota como padrão para definir os níveis de segurança para o protocolo SSL/TLS níveis de compatibilidade, que são uma combinação dos Ciphersuite, versões do protocolo SSL/TLS, tamanho da chave RSA, assinatura do certificado, entre outros. Esses níveis de compatibilidade são divididos entre compatibilidade Moderna, Intermediária e Antiga, e podem ser observados no site de boas práticas para SSL/TLS mantido pela Mozilla.
Atenção
O nível de segurança aplicado ao HTTPS na plataforma irá definir sua compatibilidade com navegadores (ex. IE, Chrome, Safari, Firefox) e executáveis (ex. Java). Navegadores e executáveis mais antigos podem apresentar falhas de comunicação com a plataforma em virtude dos mesmos não suportarem todas as implementações de segurança modernas para realizar a comunicação.
Configurações Recomendadas
Para garantir um alto nível de segurança nas configurações HTTPS da plataforma, iremos apresentar alguns cenários com configurações utilizando a compatibilidade Moderna descrito no guia de segurança mantido pela Mozilla para o protocolo SSL/TLS.
HTTPS na plataforma
No cenário abaixo, toda a configuração HTTPS é realizada diretamente na plataforma.
Dica!
Você também pode conferir se sua configuração HTTPS está funcionando corretamente, através da ferramenta: https://www.sslshopper.com/ssl-checker.html
Importante
Todas as configurações abaixo devem ser realizadas com a plataforma fora do ar.
Abaixo seguem as alterações que devem ser realizadas no arquivo de configuração ([diretório_instalação]/appserver/domain/configuration/domain.xml) para habilitar a compatibilidade Moderna.
<server name="default-server"> <...> <https-listener name="https" socket-binding="https" max-post-size="1073741824" security-realm="TOTVSTech" enabled-cipher-suites="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK" enabled-protocols="TLSv1.3" /> # Se necessário complemente com outras chaves Ciphers ou protocolos suportados <...> </server>
Recomendamos o uso de chaves e protocolos mais modernos e seguros como os indicados no exemplo.
Porém, outras chaves também são suportadas:
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA :TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:TLS_DHE_RSA_WITH_AES_128_CBC_SHA :TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:TLS_DHE_DSS_WITH_AES_256_CBC_SHA:TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Preencha a diretiva enabled-cipher-suites do domain.xml substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança. As chaves podem ser validadas em https://ciphersuite.info/.
E também os protocolos: TLSv1, TLSv1.1 e TLSv1.2
Preencha a diretiva enabled-protocols do domain.xml substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança.
Atenção!
Conforme informado pela Microsoft, os servidores Windows inferiores à versão 2022 não suportam o protocolo TLSv1.3.
Abaixo seguem as alterações que devem ser realizadas no arquivo de configuração ([diretório_instalação]/appserver/domain/configuration/host.xml) para habilitar a compatibilidade Moderna.
<server auto-start="true" group="fluig" name="fluig1"> <jvm name="default"> <heap max-size="${env.FLUIG_MEMORY_MAX:4g}" size="${env.FLUIG_MEMORY_MIN:2g}" /> <jvm-options> <option value="-Dfile.encoding=utf8" /> <option value="-XX:MaxMetaspaceSize=1024m" /> <option value="-Djavamelody.disabled=true" /> # Adicione esta linha: <option value="-Djdk.tls.ephemeralDHKeySize=2048" /> </jvm-options> </jvm> </server>
Importante
Caso o Fluig esteja abaixo da versão 1.7.0, é necessário instalar e habilitar o Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files junto à plataforma, que permite a utilização de Ciphersuites mais modernos e avançados na plataforma.
A instalação do mesmo consiste em remover os arquivos ${fluig-dir}/jdk-64/jre/lib/security/local_policy.jar e ${fluig-dir}/jdk-64/jre/lib/security/US_export_policy.jar do diretório da plataforma, e descompactar os arquivos do JCE no diretório ${fluig-dir}/jdk-64/jre/lib/security.
Opcional
A porta do HTTPS na plataforma também pode ser alterada para 443, porta padrão do HTTPS que permite o acesso ao endereço sem a necessidade de informar uma porta de acesso, apenas o protocolo https://.
Abaixo seguem as alterações que devem ser realizadas no arquivo de configuração (domain.xml) da plataforma para mudar a porta para 443.
<socket-binding-group name="full-sockets" default-interface="public"> <...> <socket-binding name="https" port="443"/> <...> </socket-binding-group> # Em algumas versões, pode estar como abaixo: # <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
HTTPS no Apache
No cenário abaixo, toda a configuração HTTPS é realizada no Apache. Este é o cenário quando a plataforma é configurada através de um proxy reverso.
Abaixo seguem as alterações que devem ser realizadas no arquivo de configuração (geralmente fluig.conf) da plataforma no Apache para habilitar a compatibilidade Moderna.
Dica!
Você também pode conferir se sua configuração HTTPS está funcionando corretamente, através da ferramenta: https://www.sslshopper.com/ssl-checker.html
<VirtualHost *:443> ... SSLProxyEngine On SSLEngine On SSLProtocol +TLSv1.3 SSLHonorCipherOrder on SSLCipherSuite "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK" # Se necessário complemente com outras chaves Ciphers suportadas SSLCompression Off ... </VirtualHost>
Recomendamos o uso de chaves e protocolos mais modernos e seguros como os indicados no exemplo.
Porém, outras chaves também são suportadas:
DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA
Preencha a diretiva SSLCipherSuite do fluig.conf substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança. As chaves podem ser validadas em https://ciphersuite.info/
E também os protocolos: TLSv1, TLSv1.1 e TLSv1.2
Preencha a diretiva SSLProtocol do fluig.conf substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança.
Atenção!
Conforme informado pela Microsoft, os servidores Windows inferiores à versão 2022 não suportam o protocolo TLSv1.3.
Validação das Configurações
Você poderá validar as configurações aplicadas através de algumas ferramentas que testam e analisam o HTTPS. Recomendamos as duas abaixo para validação.
Qualys SSL Server Test
Ferramenta Web disponível em https://www.ssllabs.com/ssltest/, que faz uma análise das configurações HTTPS e sugere recomendações com base nos dados coletados.
Atenção
Para a realização desse teste será mandatório que a plataforma esteja disponível para acesso através da internet.
Cipherscan
Ferramenta open-source para Linux disponível em https://github.com/jvehent/cipherscan, que utiliza mecanismos do OpenSSL para efetuar a validação.