[KB7857] Configure uma conexão HTTPS / SSL para ESET PROTECT em execução no Linux

Problema

Solução

HTTPS

Por motivos de segurança, recomendamos que você configure o ESET PROTECT para usar HTTPS.

Use um certificado existente

As etapas abaixo referem-se a certificados para Apache Tomcat, que são usados para garantir conexões HTTPS seguras. Para obter informações sobre as certificações ESET PROTECT, consulte nosso tópico de Ajuda online 
  1. Mova o arquivo de certificado (por examplo certificate_file.pfx) para um diretório de configuração do Tomcat (por examplo /etc/tomcat/).

  2. Abra o arquivo Server.xml localizado em /etc/tomcat/. O local pode variar dependendo da distribuição do Linux.
    • Se não houver nenhum <‎Connector depois <‎Service name="Catalina"> no Server.xml, copie a seguinte string no Server.xml. Use seus próprios valores para keystoreFile, keystorePass, e keystoreType:
<Connector port="8443"
               protocol="HTTP/1.1"
               SSLEnabled="true"
               maxThreads="150"
               scheme="https"
               secure="true"
               clientAuth="false"
               sslEnabledProtocols="TLSv1.2,TLSv1.3"
               ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
                        TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                        TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
                        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
                        TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
                        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
                        TLS_RSA_WITH_AES_128_CBC_SHA256,
                        TLS_RSA_WITH_AES_128_GCM_SHA256,
                        TLS_RSA_WITH_AES_128_CBC_SHA,
                        TLS_RSA_WITH_AES_256_CBC_SHA256,
                        TLS_RSA_WITH_AES_256_GCM_SHA384,
                        TLS_RSA_WITH_AES_256_CBC_SHA"
               keystoreFile="/etc/tomcat/certificate_file.pfx"
               keystorePass="Secret_Password_123"
               keystoreType="PKCS12"
               />
    • Se <‎Connector está presente depois <‎Service name="Catalina"> no Server.xml, substitua os valores dos parâmetros listados abaixo por seus valores:

keystoreFile - Forneça o caminho completo para o arquivo do certificado (.pfx, .keystore, ou outro). Se você usar um certificado não JKS (por examplo, um arquivo .pfx ), exclua o keyAlias (está presente em Server.xml por padrão) e adicione o apropriado keystoreType.

keystorePass - Forneça a senha do certificado.

keystoreType - Especifique o  tipo de certificado.  

  1. Reinicie o serviço Tomcat (sudo systemctl tomcat restart).
    • Se você usar um arquivo .keystore , use o caminho para o arquivo (keystoreFile="/etc/tomcat/tomcat.keystore") e defina keyAlias (keyAlias="tomcat") ao invés de keystoreType.
    • Se você deseja desabilitar o HTTP:
<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
SELinux ativado

Os usuários que têm o SELinux habilitado e recebem um sinalizador de certificado inválido, podem precisar executar o comando restorecon para restaurar o contexto de segurança do SELinux.

restorecon /etc/tomcat/my_cert_file.pfx

ls -lZ

-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   /etc/tomcat/my_cert_file.pfx


Crie um novo certificado e faça com que seja assinado

Use uma conexão HTTPS / SSL segura para o ESET PROTECT.

  1. Crie um keystore com um certificado SSL. Você deve ter o Java instalado
    Apache Tomcat requer Java:
    • Certifique-se de que Java, ESET PROTECT e Apache Tomcat tenham a mesma quantidade de bits (32 ou 64 bits).
    • Se você tiver várias versões do Java instaladas em seu sistema, recomendamos que desinstale as versões anteriores do Java e mantenha apenas o Java mais recente.
    • A partir de janeiro de 2019, as atualizações públicas do Oracle JAVA SE 8 para uso comercial, comercial ou de produção exigirão uma licença comercial. Se você não comprar uma assinatura JAVA SE, você pode usar este guia para fazer a transição para uma alternativa gratuita.

Java inclui o keytool, que permite criar um certificado por meio da linha de comando. Você deve gerar um novo certificado para cada instância do Tomcat (se você tiver várias instâncias do Tomcat) para garantir que, se um certificado for comprometido, as outras instâncias do Tomcat permanecerão seguras.

Abaixo está um exemplo de comando para criar um armazenamento de chaves com um certificado SSL:

Navegue até a localização exata do arquivo keytool, por exemplo /usr/lib/jvm/”java version”/jre/bin (o diretório depende do sistema operacional e da versão Java) e execute o comando:

sudo keytool -genkeypair -alias "tomcat" -keyalg RSA -keysize 4096 -validity 3650 -keystore "/etc/tomcat/tomcat.keystore" -storepass "yourpassword" -keypass "yourpassword" -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"
O caminho do arquivo /etc/tomcat/tomcat.keystore é apenas um exemplo, escolha seu próprio destino seguro e acessível.
Parâmetros -storepass e -keypass
Valores para -storepass and -keypass devem ser os mesmos.
  1. Exporte o certificado do armazenamento de chaves. Abaixo está um exemplo de comando para exportar a solicitação de assinatura de certificado do keystore:
sudo keytool -certreq -alias tomcat -file "/etc/tomcat/tomcat.csr" -keystore "/etc/tomcat/tomcat.keystore" -ext san=dns:ESETPROTECT
Substitua os valores apropriadamente
Substitua o valor "/etc/tomcat/tomcat.csr" para o parâmetro  -file com o caminho real e o nome do arquivo para onde você deseja que o certificado seja exportado.

Substitua o valor  ESETPROTECT para o parâmetro -ext com o nome de host real do servidor no qual seu Apache Tomcat com ESET PROTECT está sendo executado.
  1. Obtenha o certificado SSL assinado com a Autoridade de Certificação Raiz (CA) de sua escolha.

    Você pode prosseguir para a etapa 6 se planeja importar uma CA raiz posteriormente. Se você escolher proceder desta forma, seu navegador da web pode exibir avisos sobre um certificado autoassinado e você precisará adicionar uma exceção para se conectar ao ESET PROTECT via HTTPS.
     
  2. Importe o certificado raiz e o certificado intermediário de sua CA para o seu keystore. Esses certificados geralmente são disponibilizados pela entidade que assinou seu certificado. É necessário porque a resposta do certificado é validada usando certificados confiáveis do keystore.

    sudo keytool -import -alias root -file "/etc/Tomcat/root.crt" -keystore "/etc/tomcat/tomcat.keystore"

    sudo keytool -import -alias intermediate -file "/etc/Tomcat/intermediate.crt.pem" -keystore "/etc/tomcat/tomcat.keystore"

  3. Ao receber o certificado assinado com a CA raiz, importe a chave pública da CA e o certificado (tomcat.cer) em seu keystore. Abaixo está um exemplo de comando que importa um certificado assinado para o keystore:
sudo keytool -import -alias tomcat -file "/etc/tomcat/tomcat.cer" -keystore "/etc/tomcat/tomcat.keystore"
Substitua os valores apropriadamente
Substitua o valor "/etc/tomcat/tomcat.csr" para o -file um parâmetro com o caminho real e o nome do arquivo onde o certificado assinado está localizado.

Se você quiser usar um certificado já existente (por exemplo, certificado de empresa), siga essas instruções.

  1. Edite o arquivo de configuração server.xml para que a tag <‎Connector seja escrita semelhante ao exemplo abaixo:

<Connector server="OtherWebServer" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat/tomcat.keystore" keystorePass="yourpassword"/>

Esta modificação também desativa recursos não seguros do Tomcat, deixando apenas HTTPS habilitado (scheme= parametro). Por razões de segurança, você também pode precisar editar tomcat-users.xml para excluir todos os usuários do Tomcat e alterar ServerInfo.properties para ocultar a identidade do Tomcat.

  1. Reinicie o serviço Apache Tomcat. ESET PROTECT pode usar o nome do serviço tomcat9.
sudo systemctl tomcat restart

E se uma conexão segura ainda estiver falhando no Linux?
Mensagem de erro no diretório /var/....../tomcat :
failed to initialize end point associated with ProtocolHandler ["http-bio-443"] se o problema persistir, mude o o arquivo  port no server.xml para um valor superior a 1024, porque as portas abaixo de 1024 podem não ser acessíveis a usuários não root. Se, por algum motivo, você precisar usar a porta 443, ainda poderá alterar o valor e encaminhar a porta. Siga as etapas abaixo para habilitar o redirecionamento de porta (por exemplo, da porta 443 para a porta 8443)
  1. Permitir acesso remoto ao console da web:
    sudo iptables -A INPUT -p tcp -m tcp --dport 8443 -j ACCEPT
    (Alternativamente, você pode abrir e editar o arquivo de configuração do firewall (nano /etc/sysconfig/iptables) e adicione esta linha à seção começando com *nat e terminando com COMMIT: -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports |8443)
  2. Remova a porta 8080 para desativar o HTTP:
    sudo iptables -D INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

  3. Salve as regras de firewall:
    iptables-save > /etc/network/iptables.rules

  4. Desative o SELinux.  As instruções fornecidas são para dispositivos virtuais executando CentOS7 e podem ser diferentes com base na distribuição do Linux.