Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
TECNICO
TECNICO
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • FINDFACE
  • TECNICOTECNICO
  • Wiki
  • Configuração de SSL

Last edited by Erick Rocha Dec 09, 2024
Page history

Configuração de SSL

Vamos preparar o FindFace para trabalhar com SSL/HTTPS. Leia com atenção as orientações e comandos

  1. No servidor principal criaremos o diretorio de configurações do Nginx com o subdiretorio que conterá o SSL(certificado e chave).

    sudo mkdir -p /etc/nginx/ssl/
  2. Crie a chave SSL e o certificado e coloque na pasta criada (/etc/nginx/ssl). Caso esteja usando certificados auto gerenciados, use o seguinte comando:

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/my-example-domain.com.key -out /etc/nginx/ssl/my-example-domain.com.crt

Você será questinado sobre algumas informações sobre seu servidor a fim de gravar as informações corretamente no certificado. A pergunta mais importante será sobre o Common Name. Você precisa digitar o nome de domínio ou o IP público que será associado ao seu servidor. Ambos os arquivos criados(my-exmple-domain.com.key e my-example-domain.com.crt) estarão na pasta(/etc/nginx/ssl)

FindFace Video Worker

Ao usar CA-certificate, adicione o caminho do certificado aos volumes do serviço docker(no caso o findface-video-worker), adicione o comando de instalação e atulização do CA-certificate no serviço mesmo.

  1. Abra o arquivo docker-compose.yaml

    sudo vi /opt/findface-multi/docker-compose.yaml
  2. Localize o serviço findface-video-worker e ajuste-o para que se pareça com o exemplo abaixo

    • CPU

      findface-video-worker:
         entrypoint: ["sh", "-c", "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --yes ca-certificates && update-ca-certificates && exec /tini -- /findface-video-worker-cpu --config=/etc/findface-video-worker.yaml"]
         depends_on: [findface-video-manager, findface-ntls, mongodb]
         image: docker.int.ntl/ntech/universe/video-worker-cpu:ffserver-8.221216
         logging: {driver: journald}
         network_mode: service:pause
         restart: always
         volumes: ['./configs/findface-video-worker/findface-video-worker.yaml:/etc/findface-video-worker.yaml:ro',
       './models:/usr/share/findface-data/models:ro', './cache/findface-video-worker/models:/var/cache/findface/models_cache',
       './cache/findface-video-worker/recorder:/var/cache/findface/video-worker-recorder',
       '/etc/nginx/ssl/my-example-domain.crt:/usr/local/share/ca-certificates/my-example-domain.crt:ro']
    • GPU (Somente adicionar o caminho do certificado e atualizar o CA-certificate)

      findface-video-worker:
         entrypoint: ["sh", "-c", "update-ca-certificates && exec /tini -- /findface-video-worker-gpu --config=/etc/findface-video-worker.yaml"]
         depends_on: [findface-video-manager, findface-ntls, mongodb]
         environment: [CUDA_VISIBLE_DEVICES=0]
         image: docker.int.ntl/ntech/universe/video-worker-gpu:ffserver-8.221216
         logging: {driver: journald}
         network_mode: service:pause
         restart: always
         runtime: nvidia
         volumes: ['./configs/findface-video-worker/findface-video-worker.yaml:/etc/findface-video-worker.yaml:ro',
       './models:/usr/share/findface-data/models:ro', './cache/findface-video-worker/models:/var/cache/findface/models_cache',
       './cache/findface-video-worker/recorder:/var/cache/findface/video-worker-recorder',
       '/etc/nginx/ssl/my-example-domain.crt:/usr/local/share/ca-certificates/my-example-domain.crt:ro']

Para versões na CPU, a inicialização do serviço findface-video-worker(responsável pelas câmeras) vai demorar aproximadamente 15 segundos a mais.

  1. Reinicie todos os containers
cd /opt/findface-multi/

sudo docker compose restart

FindFace Nginx

Configure o Nginx do Findface (no servidor principal) para usar o SSL. Abra o arquivo de configuração em /opt/findface-multi/configs/findface-multi-ui/nginx-site.conf. Aplique as seguintes modificações no arquivo

  1. Adicione a nova seção server {...} que contem a regra de substituição. Na linha rewrite ^(.*) https://..., substitua ip_address_server_ffmulti pelo endereço de IP onde o FindFace esta instalado.
server {
        listen 80;
        server_name my-example-domain.com www.my-example-domain.com;
        rewrite ^(.*) https://ip_address_server_ffmulti$1 permanent;
        access_log off;
}
  1. Descomente as seguintes linhas na já existente seção server {...}
# listen 80 default_server;
# listen [::]:80 default_server;
  1. Adicione as seguintes linhas, incluindo os caminhos para o certificado e a chave. Adicione na já existente seção server{...}
listen 443 ssl;

ssl_certificate     /etc/nginx/ssl/my-example-domain.com.crt;
ssl_certificate_key /etc/nginx/ssl/my-example-domain.com.key;

Um exemplo de configuração do arquivo (/opt/findface-multi/configs/findface-multi-ui/nginx-site.conf) é mostrado abaixo:

Veja com atenção as mudanças realizadas e cheque com suas configurações

upstream ffsecurity {
        server 127.0.0.1:8002;
}

upstream ffsecurity-ws {
        server 127.0.0.1:8003;
}

upstream ffsecurity-django {
        server 127.0.0.1:8004;
}

upstream audit {
        server 127.0.0.1:8012;
}

upstream identity-provider {
        server 127.0.0.1:8022;
}

map $http_upgrade $ffsec_upstream {
        default "http://ffsecurity-ws";
        "" "http://ffsecurity";
}


server {
        listen 80;
        server_name my-example-domain.com www.my-example-domain.com;
        rewrite ^(.*) https://my-example-domain.com$1 permanent;
        access_log off;
}

server {
        # listen 80 default_server;
        # listen [::]:80 default_server;

        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/my-example-domain.com.crt;
        ssl_certificate_key /etc/nginx/ssl/my-example-domain.com.key;

        root /var/lib/findface-security;

        autoindex off;

        server_name _;

        location = / {
                alias /usr/share/findface-security-ui/;
                try_files /index.html =404;
        }
        location /static/ {
        }
        location /uploads/ {
                # internal; # uncomment if you intend to enable OVERPROTECT_MEDIA
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' '*';
                add_header 'Access-Control-Allow-Headers' '*';
                add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
                add_header 'Access-Control-Max-Age' 2592000;

                location ~ /card/(?<card_type>[a-zA-Z]+)/(?<card_id>[0-9]+)/attachments/(.*)$ {
                        add_header 'Access-Control-Allow-Origin' '*';
                        add_header 'Access-Control-Allow-Methods' '*';
                        add_header 'Access-Control-Allow-Headers' '*';
                        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
                        add_header 'Access-Control-Max-Age' 2592000;
                        add_header 'Content-Disposition' 'attachment';
                        add_header 'Content-Security-Policy' 'sandbox';
                }
        }
        location /ui-static/ {
                alias /usr/share/findface-security-ui/ui-static/;
        }
        location /doc/ {
                alias /opt/findface-security/doc/;
        }
        location /api-docs {
                alias /opt/findface-security/rapidoc;
                index index.html;
        }
        location /api-docs/ {
                alias /opt/findface-security/rapidoc/;
                try_files $uri index.html =404;
        }
        location ~ /videos/(?<video_id>[0-9]+)/upload/(.*)$ {
                client_max_body_size 15g;

                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_pass http://ffsecurity;
        }
        location @django {
                internal;
                client_max_body_size 1g;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_read_timeout 5m;
                proxy_pass http://ffsecurity-django;
        }

#      location /v1/video-liveness {
#          add_header Access-Control-Allow-Headers "*" always;
#          add_header Access-Control-Allow-Methods "*" always;
#          add_header Access-Control-Allow-Origin  "*" always;
#
#          if ($request_method = 'OPTIONS') {
#              return 204;
#          }
#
#          client_max_body_size 300m;
#          proxy_set_header Host $http_host;
#          proxy_set_header X-Forwarded-For $remote_addr;
#          proxy_set_header X-Forwarded-Proto $scheme;
#          proxy_pass http://127.0.0.1:18301;
#          proxy_read_timeout 5m;
#      }

        location / {
                client_max_body_size 1g;
                proxy_set_header Host $http_host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass $ffsec_upstream;
                proxy_read_timeout 5m;

                location ~ ^/(cameras|videos|vms|external-vms).*/stream/?$ {
                        proxy_set_header Host $http_host;
                        proxy_set_header X-Forwarded-For $remote_addr;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_pass http://ffsecurity;
                }

                location ~ ^/streams/(.*)$ {
                        internal;
                        proxy_pass $1$is_args$args;
                }

                location /audit-logs {
                        proxy_pass http://audit;
                }

                location ~ ^/(auth|ad_groups|cproauth|groups|permissions|sessions|users|user-face|device-blacklist-records) {
                        proxy_pass http://identity-provider;
                }
        }
#       location /users/me/ad {
#
#                 proxy_pass <FFmulti_address>/auth/ad_login/; e.g http://127.0.0.1/auth/ad_login/;
#                 proxy_method POST;
#
#                 proxy_set_header   X-Real-IP $remote_addr;
#                 proxy_set_header   Host $http_host;
#                 proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
#                 proxy_set_header  Authorization $http_authorization;
#                 proxy_pass_header Authorization;
#                 proxy_no_cache 1;
#                 proxy_cache_bypass 1;
#
#                 auth_gss on;
#                 auth_gss_realm <REALM>; # e.g. TESTNTL.LOCAL;
#                 auth_gss_keytab <path/to/file.keytab>; # e.g. /var/lib/web.keytab
#                 auth_gss_service_name <service_name>; # e.g. HTTP/web.testntl.local;
#                 auth_gss_allow_basic_fallback on;
#         }

}

4.Copie o arquivo genérico de configuração do Nginx chamado nginx.conf que esta dentro do container em um dos serviços do FindFace para sua máquina

sudo docker cp findface-multi-findface-multi-ui-1:/etc/nginx/nginx.conf /etc/nginx/nginx.conf
  1. No arquivo de configuração que acabamos de copiar (/etc/nginx/nginx.conf), ache a seção SSL Settings e adicione as seguintes linhas
ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 1h;
  1. No arquivo /opt/findface-multi/docker-compose.yaml, monte, a pasta do SSL (/etc/nginx/ssl) e o arquivo de configuração que copiamos, no serviço findface-multi-findface-multi-ui-1

    • Abra o docker compose
      sudo vi /opt/findface-multi/docker-compose.yaml
    • Localize o serviço findface-multi-ui e configure-o para que se pareça com o exemplo abaixo
      findface-multi-ui:
         depends_on: [findface-multi-legacy]
         image: docker.int.ntl/ntech/multi/multi/ui:ffmulti-2.1.3
         network_mode: service:pause
         restart: always
         volumes: ['./configs/findface-multi-ui/nginx- site.conf:/etc/nginx/conf.d/default.conf:ro',    './data/findface-multi-legacy/uploads:/var/lib/findface-security/uploads','/etc/nginx/ssl:/etc/nginx/ssl',    '/etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro']

Findface Multi Legacy

Edite o arquivo de configuração /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py

  1. No parametro ROUTER_URL e IMAGE_CROP_URL, substitua o http:// por https://
sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
...
'ROUTER_URL': 'https://127.0.0.1',
'IMAGE_CROP_URL': 'https://127.0.0.1',
...
  1. Se você usa CA-certificate, especifique em ROUTER_URL o domínio no qual o certificado foi criado
'ROUTER_URL': 'https://my-example-domain.com'
  1. Adicione https://my-example-domain.com ao parametro EXTERNAL_ADDRESS
...
EXTERNAL_ADDRESS = 'https://my-example-domain.com'
...
  1. Adicione as seguintes linhas, no caso de uma configuração customizada e em que as fotos estão tendo problemas para recarregar na pagina do dominio
USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
  1. Reinicie o FindFace
cd /opt/findface-multi

sudo docker-compose restart

Configure os hosts

  1. Abra o arquivo /etc/hosts/ no servidor onde o FindFace Multi esta instalado e adicione a seguinte linha
sudo vi /etc/hosts
127.0.0.1 my-example-domain.com
  1. No sistema onde você usa um navegador para interagir com o FindFace Multi, navegue até o arquivo hosts. Adicione o endereço de IP do servidor que o findface está instalado no lugar de ip_address_server_ffmulti. Substitua my-example-domain.com com o seu nome de domínio.

    • No linux sh sudo vi /etc/hosts conf *ip_address_server_ffmulti* my-example-domain.com
    • No Windows, execute/pesquise C:\Windows\System32\drivers\etc\hosts como um administrador. E adicione a seguinte linha no arquivo hosts: conf *ip_address_server_ffmulti* my-example-domain.com
  2. Reinicie o FindFace

cd /opt/findface-multi/

sudo docker-compose restart

Câmeras / Upload de Vídeo(Parte Web)

Se você usa o certificado auto gerenciado, desative das câmeras a verificação do SSL

  • Navegue em Video Sources > Cameras ou Uploads
  • Clique na câmera
  • Na aba Advanced, desmarque a opção Verify the SSL certificate

Exemplo de Verificação SSL

Clone repository

Home

  1. Executável

Guia de Instalação e Manutenção

  1. Preparação da Máquina
  2. Instalação
  3. Migrar fotos e videos para outro disco
  4. Liveness - Obrigatorio para licenças que não tem o componente
  5. Clusterização e Rastreamento de Interações

Guias Extras

  1. Configuração de HTTPS/SSL
  2. Mudar Idioma
  3. Alarmes
  4. Removendo dados do banco de dados
  5. Customizar Record Index
  6. Preparação de Maquina Rocky Linux

Solução de Problemas

  1. FindFace está com a tela branca

  2. Coloquei outra licença, mas não atualizou

  3. Fotos Quebradas na Pagina Web

  4. A camera detecta, mas demora aparecer o resultado

  5. FAQ