Pular para o conteúdo principal

HTTPS

Todo o tráfego passa pelo Traefik (pch_traefik, portas 80 e 443), que termina o TLS e encaminha para os contentores. Nenhum certificado é gerido à mão.

Certificados​

  • Fornecidos pela Let's Encrypt (desafio HTTP na porta 80), pedidos automaticamente para cada nome declarado nas etiquetas Traefik dos contentores.
  • Renovados automaticamente pelo Traefik; guardados no volume traefik_letsencrypt (acme.json).
  • A porta 80 redireciona para 443 para todos os nomes.

Acrescentar um nome de anfitrião: criar o registo DNS primeiro, depois acrescentar a regra Host(...) nas etiquetas do contentor em causa e recriá-lo. Se o Traefik tentou o pedido antes de o DNS existir, serve o seu « TRAEFIK DEFAULT CERT »: docker restart pch_traefik relança o pedido.

observação

O endereço de contacto declarado à Let's Encrypt (opção acme.email no compose) é o do responsável técnico atual; a substituir por um endereço da UCP-PCH na passagem de testemunho.

Nomes servidos​

ServidorNomePara
Produçãobemba.ucp-pch.org, ucp-pch.orgaplicação (/api, /photos → backend)
Produçãomariacare.ucp-pch.org, sig.ucp-pch.orgredirecionamento para bemba.ucp-pch.org
Produçãodocubemba.ucp-pch.orgdocumentação
Pré-produçãosig-preprod.ucp-pch.orgaplicação
Pré-produçãokf/kc/ee.kobo.ucp-pch.orgKoboToolbox (Traefik → nginx do Kobo)
Pré-produçãogitlab.ucp-pch.orgGitLab

Cabeçalhos de segurança​

Colocados pelo Nginx do frontend (nginx/frontend.conf):

CabeçalhoValor
Strict-Transport-Securityum ano, subdomínios incluídos
Content-Security-Policydefault-src 'self', scripts só do domínio, connect-src limitado ao domínio, ao KoboToolbox e ao Sentry
X-Frame-OptionsSAMEORIGIN
X-Content-Type-Optionsnosniff
Referrer-Policystrict-origin-when-cross-origin

As versões do Nginx e do PHP não são anunciadas (server_tokens off, expose_php Off).

Verificar​

curl -sI https://bemba.ucp-pch.org/ | grep -iE "strict-transport|content-security|x-frame"
curl -sv https://bemba.ucp-pch.org/ -o /dev/null 2>&1 | grep -E "issuer|expire date"

Teste externo: SSL Labs (https://www.ssllabs.com/ssltest/).

Conteúdo misto​

A aplicação é servida apenas em HTTPS e chama a API por um caminho relativo (/api): nenhuma chamada em HTTP simples é possível a partir do navegador. Um serviço de terceiros em http:// seria de qualquer forma bloqueado pela CSP.