Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Ajustes solicitados no chamado FFDN-7273.


Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone


Objetivo

...

O objetivo deste guia é detalhar as configurações necessárias para utilização de proxy reverso NGINX com protocolo HTTPS.


Pré-requisitos

...

  • Possui Possuir o NGINX na versão 1.20.1 ou superior instalado. Detalhes de instalação e configuração do NGINX estão disponíveis na documentação oficial.

...

  • Possuir um certificado digital válido;.


Recomendações

...

  • Instalar o NGINX em um servidor separado do servidor onde o Fluig está instalado.
  • Faça as alterações necessárias na topologia utilizada, para que o acesso funcione corretamente após implantar o proxy reverso. Para saber mais sobre a topologia DMZ, clique aqui.

    Painel
    borderColor#ebecf0

    Estado
    subtletrue
    titleExemplos de alterações

    : apontamento


    Apontamento de IP na rede interna, liberação de portas, alteração de endereço de acesso do Fluig (usuário wcmadmin)

     

    .


Configurando o NGINX como proxy reverso

...

com HTTPS

...

Siga o passo a passo, conforme descrito abaixo.

Deck of Cards
idnginx-settings
Card
defaulttrue
idstep1
labelPasso 1


  • Certifique-se de que a interface de configuração pública esteja preenchida com o IP do servidor (rede interna).
Para
  •  Para isso, abra o arquivo[FLUIG]/appserver/domain/configuration/host.xml, localize a tag <interface name="public"> e verifique o valor da propriedade "value":

Image Modified

Nota
titleAtenção:Importante!

Não é recomendada a utilização do recomendado utilizar o valor "0.0.0.0" na interface de configuração pública.

Card
idstep2
labelPasso 2



Card
idstep3
labelPasso 3


  • No servidor NGINX, utilize os certificados e o arquivo gerado para realizar a seguinte configuração:
    • Salve os certificados na pasta /etc/nginx/certs;
    • Cole o arquivo de configuração gerado no Passo 2 em /etc/nginx/conf.d.


Card
idstep4
labelPasso 4


  • Adicione as diretivas para configuração das notificações em tempo real (serviço Realtime) no arquivo gerado no Passo 3 - "/etc/nginx/conf.d":
    • Informe o DNS do servidor na diretiva "server_name";
    • Informe o caminho completo dos arquivos de certificado (arquivo .cert) na diretiva ssl_certificate;
    • Informe o caminho completo dos arquivos de certificado (arquivo .key) na diretiva ssl_certificate_key;
    • Informe o IP e a porta onde o serviço do Realtime está em execução, na diretiva "proxy-pass". A porta padrão do Realtime é 7777, caso não tenha sido alterada.

      Bloco de código
      themeMidnight
      server {
          listen 7777 ssl;
          server_name fluig.suaempresa.com;
          ssl_certificate     /etc/nginx/certs/fluig.cert;
          ssl_certificate_key /etc/nginx/certs/fluig.key;
          
          location / {
          	proxy_pass http://[IP_REALTIME]:[PORTA_REALTIME];
          	proxy_http_version 1.1;
          	proxy_set_header Host $host;
          	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          	proxy_set_header Upgrade $http_upgrade;
          	proxy_set_header Connection "upgrade";
          }
      }


Card
idstep5
labelPasso 5


  • No arquivo "/etc/nginx/conf.d", no contexto "server", que estará ouvindo a porta 443, configure as seguintes diretivas:
    • Informe o caminho completo dos arquivos de certificado (arquivo .cert) na diretiva ssl_certificate;
    • Informe o caminho completo dos arquivos de certificado (arquivo .key) na diretiva ssl_certificate_key;
    • Oculte a versão do NGINX no cabeçalho de resposta das requisições, informando o valor "off" na diretiva "server_tokens";
    • Adicione as diretivas de cabeçalho ("add_header") conforme abaixo:

      Bloco de código
      languagebash
      themeMidnight
      server {
          listen 443 ssl http2;
          server_name fluig.suaempresa.com;
          server_tokens off;
          
          ssl_certificate     /etc/nginx/certs/fluig.cert;
          ssl_certificate_key /etc/nginx/certs/fluig.key;
          ssl_protocols       TLSv1.
2 TLSv1.
    • 3;
          ssl_ciphers         ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:
!aNULL
    • ECDHE-ECDSA-AES256-GCM-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
          ssl_prefer_server_ciphers on;
          ssl_session_cache   shared:SSL:10m;
          
          add_header 'Access-Control-Allow-Origin' 'https://fluig.suaempresa.com/';
          add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
          add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
          add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
          add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
note
Nota
titleAtençãoImportante!

Substitua "fluig.suaempresa.com" pelo endereço que a partir do qual você deseja acessar o Fluig.

Informações
titleNota:

Recomendamos o uso de chaves e protocolos mais modernas modernos e seguras 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 ssl_ciphers do conf.d 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 ssl_protocols do conf.d substituindo pelos valores suportados acima que estejam de acordo com sua política de segurança.

Card
idstep6
labelPasso 6


  • No contexto "server" que estará ouvindo a porta 443
Card
idstep6
labelPasso 6
No contexto "server" que estará ouvindo a porta 443
  • , adicione as seguintes diretivas no contexto "location /", no arquivo "/etc/nginx/conf.d", conforme abaixo:
    • Na diretiva "proxy-pass", informe o IP do servidor do Fluig e a porta definida na instalação da plataforma (a porta padrão é 8080);
    • Adicione as diretivas de cabeçalho para "proxy" conforme abaixo:

      Bloco de código
      themeMidnight
          location / {
              proxy_pass          http://[IP_FLUIG]:[PORTA_FLUIG];
              proxy_ssl_verify    off;
              proxy_ssl_ciphers   HIGH:!aNULL:!MD5;
      
              proxy_pass_request_headers on;
              proxy_set_header Host $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
              proxy_set_header X-Forwarded-Server $host;
              proxy_set_header X-Forwarded-Host $host:$server_port;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";


true
Card
idstep7
labelPasso 7


  • Após efetuar os passos anteriores, o arquivo "/etc/nginx/conf.d" estará desta forma:

    Bloco de código
    themeMidnight
collapse
server {
    listen 7777 ssl;
    server_name fluig.suaempresa.com;
    ssl_certificate     /etc/nginx/certs/fluig.cert;
    ssl_certificate_key /etc/nginx/certs/fluig.key;
    
    location / {
    	proxy_pass http://[IP_FLUIG]:7777;
    	proxy_http_version 1.1;
    	proxy_set_header Host $host;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header Upgrade $http_upgrade;
    	proxy_set_header Connection "upgrade";
    }
}

server {
    listen 443 ssl http2;
    server_name fluig.suaempresa.com;
    server_tokens off;
    
    ssl_certificate     /etc/nginx/certs/fluig.cert;
    ssl_certificate_key /etc/nginx/certs/fluig.key;
    ssl_protocols
  •       
TLSv1.2
  •  TLSv1.3;
        ssl_ciphers 		ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:
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:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/'; add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE'; add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE'; add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version'; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; location / {
  • !aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:10m;
        
        add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/';
        add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        location / {
            proxy_pass          http://[IP_FLUIG]:[PORTA_FLUIG];
            proxy_ssl_verify    off;
            proxy_ssl_ciphers   HIGH:!aNULL:!MD5;
    
            proxy_pass_request_headers on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_
pass http://[IP_FLUIG]:[PORTA_FLUIG]
  • set_header X-Forwarded-Proto $scheme;
            proxy_
ssl
  • set_
verify
  • header 
off
  • X-Forwarded-Server $host;
            proxy_
ssl
  • set_
ciphers
  • header 
HIGH:!aNULL:!MD5;
  • X-Forwarded-Host $host:$server_port;
            proxy_
pass_request_headers on
  • set_header Upgrade $http_upgrade;
            proxy_set_header 
Host
  • Connection 
$host
  • "upgrade";
    
            
proxy
  • client_max_
set_header X-Forwarded-For $proxy_add_x_forwarded_for
  • body_size       880m;
            
proxy
  • client_body_
set
  • buffer_
header X-Forwarded-Proto $scheme;
  • size    256k;
    
            proxy_
set_header X-Forwarded-Server $host
  • buffer_size          8k;
            proxy_
set_header X-Forwarded-Host $host:$server_port;
  • buffers             
proxy_set_header
  •  
Upgrade
  • 8 
$http_upgrade
  • 32k;
            proxy_
set_header Connection "upgrade"; client_max_body_
  • busy_buffers_size    
880m
  • 64k;
            
client
  • proxy_temp_
body
  • file_
buffer
  • write_size 
256k
  • 64k;
    
  •     
proxy_buffer_size 8k; proxy_buffers 8 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
  • }
    }


Card
idstep8
labelPasso 8


  • Reinicie os serviços do Fluig e do NGINX em ambos os servidores.
Nota
titleImportante!

Dependendo do ambiente (versão, sistema operacional utilizado,

Card
idstep8
labelPasso 8

Reinicie os serviços do Fluig e do NGINX em ambos os servidores.

Nota
titleAtenção:

Dependendo do ambiente (versão, sistema operacional utilizado, etc.) algumas diretivas detalhadas nesta documentação podem estar presentes na sua instalação do Nginx NGINX também. Isso causará o erro "directive is duplicate", impossibilitando a inicialização do serviço do NginxNGINX. Caso isso ocorra, verifique qual diretiva será mantida: dos arquivos de configuração do Nginx NGINX ou no arquivo de configuração criado com base nessa documentação.


Troubleshotting

...

Erros de timeout ou conexão encerrada pelo NGINX.

Deck of Cards
idnginx-troubleshooting1
Card
defaulttrue
idt1-step1
labelPasso 1


  • Abra o arquivo de configuração do NGINX - /etc/nginx/conf.d - e inclua as diretivas de timeout no contexto "server" > "location /" conforme abaixo:

    Bloco de código
    themeMidnight
            proxy_connect_timeout	600;
            proxy_send_timeout 		600;
            proxy_read_timeout 		600;
            send_timeout            600;


Card
idt1-step2
labelPasso 2


  • Após incluir as diretivas de timeout, o arquivo "/etc/nginx/conf.d" estará desta forma:

    Bloco de código
    themeMidnight
collapsetrue
server {
    listen 7777 ssl;
    server_name fluig.suaempresa.com;
    ssl_certificate     /etc/nginx/certs/fluig.cert;
    ssl_certificate_key /etc/nginx/certs/fluig.key;
    
    location / {
    	proxy_pass http://[IP_FLUIG]:7777;
    	proxy_http_version 1.1;
    	proxy_set_header Host $host;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header Upgrade $http_upgrade;
    	proxy_set_header Connection "upgrade";
    }
}

server {
    listen 443 ssl http2;
    server_name fluig.suaempresa.com;
    server_tokens off;
    
    ssl_certificate     /etc/nginx/certs/fluig.cert;
    ssl_certificate_key /etc/nginx/certs/fluig.key;
    ssl_protocols       TLSv1.
2 TLSv1.
  • 3;
        ssl_ciphers 
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384: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
  • GCM-SHA256:ECDHE-ECDSA-
AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256
  • AES128-GCM-SHA256:
DHE
  • ECDHE-
DSS
  • RSA-AES256-
SHA
  • GCM-SHA384:
DHE
  • ECDHE-
RSA
  • ECDSA-AES256-GCM-
SHA
  • SHA384:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK; # Se necessário complemente com outras chaves Ciphers suportadas
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:10m;
        
        add_header 'Access-Control-Allow-Origin' 'https://fluig.empresa.com/';
        add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        location / {
            proxy_pass          http://[IP_FLUIG]:[PORTA_FLUIG];
            proxy_ssl_verify    off;
            proxy_ssl_ciphers   HIGH:!aNULL:!MD5;
    
            proxy_pass_request_headers on;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    
            client_max_body_size       880m;
            client_body_buffer_size    256k;
    
            proxy_connect_timeout	600;
            proxy_send_timeout 		600;
            proxy_read_timeout 		600;
            send_timeout                600;
    
            proxy_buffer_size          8k;
            proxy_buffers              8 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
    }


Card
idt1-step3
labelPasso 3


  • Reinicie os serviços NGINX para aplicar a alteração realizada.
Nota
titleAtenção:

Caso o problema de timeout persista após aplicar a configuração acima, é necessário avaliar o que está ocorrendo invés de aumentar o tempo de timeout. Se desejar, entre em contato com o seu ESN e solicite uma proposta de consultoria investigativa Fluig.


Ocultar informações no cabeçalho HTTP

...

Para prevenir vulnerabilidades, é importante que as informações não fiquem expostas no cabeçalho HTTP. Clique aqui e saiba como ocultá-las.