|
|
:construction: Estamos trabalhando nisso :construction_worker:
|
|
|
|
|
|
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).
|
... | ... | @@ -18,7 +16,7 @@ Você será questinado sobre algumas informações sobre seu servidor a fim de g |
|
|
|
|
|
### 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 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
|
|
|
```bash
|
... | ... | @@ -63,5 +61,340 @@ Ao usar CA-certificate, adicione o caminho do certificado aos volumes do serviç |
|
|
|
|
|
|
|
|
|
|
|
3. Reinicie todos os containers
|
|
|
|
|
|
```sh
|
|
|
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.
|
|
|
|
|
|
```conf
|
|
|
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;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
2. Descomente as seguintes linhas na já existente seção **server {...}**
|
|
|
```conf
|
|
|
# listen 80 default_server;
|
|
|
# listen [::]:80 default_server;
|
|
|
```
|
|
|
|
|
|
3. Adicione as seguintes linhas, incluindo os caminhos para o certificado e a chave. Adicione na já existente seção **server{...}**
|
|
|
|
|
|
```conf
|
|
|
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
|
|
|
|
|
|
```conf
|
|
|
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
|
|
|
|
|
|
```conf
|
|
|
sudo docker cp findface-multi-findface-multi-ui-1:/etc/nginx/nginx.conf /etc/nginx/nginx.conf
|
|
|
```
|
|
|
|
|
|
5. No arquivo de configuração que acabamos de copiar (/etc/nginx/nginx.conf), ache a seção **SSL Settings** e adicione as seguintes linhas
|
|
|
|
|
|
```conf
|
|
|
ssl_session_cache shared:SSL:10m;
|
|
|
ssl_session_timeout 1h;
|
|
|
```
|
|
|
|
|
|
|
|
|
6. 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
|
|
|
```yaml
|
|
|
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
|
|
|
```yaml
|
|
|
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://__
|
|
|
```bash
|
|
|
sudo vi /opt/findface-multi/configs/findface-multi-legacy/findface-multi-legacy.py
|
|
|
```
|
|
|
|
|
|
```conf
|
|
|
...
|
|
|
'ROUTER_URL': 'https://127.0.0.1',
|
|
|
'IMAGE_CROP_URL': 'https://127.0.0.1',
|
|
|
...
|
|
|
```
|
|
|
|
|
|
2. Se você usa CA-certificate, especifique em **ROUTER_URL** o domínio no qual o certificado foi criado
|
|
|
|
|
|
```conf
|
|
|
'ROUTER_URL': 'https://my-example-domain.com'
|
|
|
```
|
|
|
|
|
|
3. Adicione https://my-example-domain.com ao parametro **EXTERNAL_ADDRESS**
|
|
|
|
|
|
```conf
|
|
|
...
|
|
|
EXTERNAL_ADDRESS = 'https://my-example-domain.com'
|
|
|
...
|
|
|
```
|
|
|
|
|
|
4. 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**
|
|
|
|
|
|
```conf
|
|
|
USE_X_FORWARDED_HOST = True
|
|
|
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|
|
|
```
|
|
|
|
|
|
5. 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
|
|
|
|
|
|
```bash
|
|
|
sudo vi /etc/hosts
|
|
|
```
|
|
|
|
|
|
```conf
|
|
|
127.0.0.1 my-example-domain.com
|
|
|
```
|
|
|
|
|
|
2. 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
|
|
|
```
|
|
|
|
|
|
3. Reinicie o FindFace
|
|
|
|
|
|
```sh
|
|
|
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**
|
|
|
|
|
|
:construction: Estamos trabalhando nisso :construction_worker: |
|
|
 |