Lançador Produtos Bitnami Documentaçãoimaxe CLI Blog Contacto
imaxe tls certificados v1.0.0

Certificados HTTPS, sem dores de cabeça

Emite e renova certificados gratuitos da Let's Encrypt para o teu servidor e recarrega-os sem interromper o serviço. Um comando põe tudo a andar; a partir daí renova-se sozinho.

$ imaxe tls issue app.ejemplo.com --email [email protected]
Versão
v1.0.0
Subcomandos
6
Config
/etc/imaxe/tls.yml
Requer root
sim
Renovação
auto · timer

O que faz este módulo #

Um certificado TLS é o que transforma http:// em https://: cifra a ligação entre os teus visitantes e o servidor, e faz o navegador mostrar o cadeado em vez de um aviso de «não seguro».

O módulo tls trata de todo o ciclo de vida desse certificado usando o certbot: solicita-o à Let's Encrypt (uma autoridade gratuita e bem reconhecida), prova que o domínio é teu através do desafio ACME, instala o certificado onde o teu servidor web o espera e renova-o automaticamente antes de expirar — sem teres de te lembrar.

Antes de começar

O teu domínio (ex. app.ejemplo.com) tem de apontar via DNS para o IP deste servidor, e a porta 80 tem de estar acessível para o desafio HTTP-01. Caso contrário, a emissão falhará no passo da validação.

Guia rápidotarefas passo a passo

Tarefas comuns #

Escolhe o que queres fazer. Cada receita traz o comando já escrito — basta trocar pelo teu próprio domínio e email, e clicar em Copiar.

1

Emitir o meu primeiro certificado

Consegue o cadeado HTTPS para o teu domínio num minuto.

Liga-te por SSH ao teu servidor com o utilizador ubuntu.

Executa o comando, trocando pelo teu próprio domínio e email (o email só é usado para te avisar se algo estiver prestes a expirar):

terminal
$ sudo imaxe tls issue app.ejemplo.com --email [email protected]

Espera uns segundos. Verás o progresso do desafio e, no final, a data de expiração.

O teu site carrega agora por https:// com o cadeado. A renovação automática está ativada — não tens de fazer mais nada.
2

Ver quais existem e quando expiram

Verifica o estado dos teus certificados num relance.

Um resumo rápido do estado geral e do timer de renovação:

terminal
$ sudo imaxe tls status

Queres o detalhe domínio a domínio, com os dias restantes e o caminho do fullchain? Usa list:

terminal
$ sudo imaxe tls list
Se vires algum domínio com poucos dias restantes, salta para a receita Forçar uma renovação.
3

Forçar uma renovação

Normalmente é automática, mas podes antecipá-la se precisares.

Renova todos os certificados perto de expirar (é exatamente o que o timer faz):

terminal
$ sudo imaxe tls renew

Queres ensaiá-la primeiro sem tocar no disco, ou renovar mesmo que ainda faltem dias? Adiciona --dry-run ou --force:

terminal
$ sudo imaxe tls renew --dry-run
$ sudo imaxe tls renew --force
O servidor web recarrega-se com o novo certificado. Os teus visitantes não notam qualquer interrupção.
4

Revogar um certificado

Invalida um certificado na autoridade (ex. se a chave foi comprometida).

Revoga o certificado de um domínio na Let's Encrypt, indicando o motivo se o souberes:

terminal
$ sudo imaxe tls revoke app.ejemplo.com --reason keycompromise
O certificado deixa de ser válido, de imediato. Se o domínio ainda estiver em uso, emite um novo com issue.
5

Apagar um certificado do disco

Deixa de gerir um domínio que já não usas.

Remove o certificado e as suas chaves do disco. Nota: isto não o revoga na autoridade — para isso, usa revoke primeiro.

terminal
$ sudo imaxe tls delete tienda.ejemplo.com
O domínio desaparece de imaxe tls list e a sua renovação automática para.
Algo não funcionou?

O problema mais comum é o DNS ainda não ter propagado ou a porta 80 estar fechada. Espera uns minutos e tenta de novo. Se persistir, experimenta primeiro o modo de teste com --staging (vê a referência) para não gastares a tua quota de tentativas.

Referência CLIcomandos, flags e ficheiros

Sinopse #

uso
imaxe tls <subcomando> [<dominio>...] [--email CORREO] [flags]

Os subcomandos que tocam em certificados requerem privilégios de root (usa sudo) porque escrevem em /etc/imaxe/ e recarregam serviços do sistema. Adiciona --json a list ou status para saída legível por máquina, apta para scripting.

Subcomandos #

SubcomandoO que fazFlags relevantes
issueEmite um certificado para um ou mais domínios, resolvendo o desafio ACME.--email, --webroot, --standalone, --staging
renewRenova os certificados perto de expirar e recarrega o servidor web. Adequado para um timer.--dry-run, --force
listLista os certificados geridos com os dias até expirar e o caminho do fullchain.--json
statusResumo: número de certificados, os que estão perto de expirar e o estado do timer de renovação.--json
revokeRevoga um certificado por domínio na autoridade (ACME).--reason
deleteApaga o certificado e as suas chaves do disco. Não revoga no ACME.

Argumentos e flags #

FlagTipoPor omissãoDescrição
<dominio> obr.string…Um ou mais domínios para o certificado. Em issue, o primeiro é o principal (CN); os restantes são SANs. Em revoke/delete, o domínio sobre o qual operar.
--emailstringtls.ymlEmail de contacto para a conta ACME. Obrigatório no primeiro issue; depois reutiliza-se o de tls.yml.
--webrootpath/var/www/htmlDiretório raiz para o desafio HTTP-01. O método por omissão.
--standaloneboolfalseUsa o servidor incorporado do certbot em vez de um webroot. Requer que a porta 80 esteja livre.
--stagingboolfalseUsa o ambiente de teste da Let's Encrypt (não conta para o rate limit). O certificado não será de confiança.
--dry-runboolfalseEm renew, simula a renovação sem tocar no disco.
--forceboolfalseEm renew, renova mesmo que não esteja perto de expirar.
--reasonenumunspecifiedEm revoke: unspecified, keycompromise, superseded, cessationofoperation.
--jsonboolfalseEm list/status, emite o resultado como JSON em stdout.

Ficheiros e caminhos #

CaminhoConteúdo
/etc/imaxe/tls.ymlConfiguração do módulo: email por omissão, método (webroot/standalone), webroot, staging, renovação automática e reload hook.
/etc/letsencrypt/live/<dominio>/Certificado (fullchain.pem) e chave privada (privkey.pem) geridos pelo certbot.
/var/log/imaxe/tls.logLog estruturado de cada emissão, renovação e revogação.
imaxe-tls.timerTimer do systemd que dispara o renew periodicamente.

Exemplo de tls.yml:

/etc/imaxe/tls.yml
email: [email protected]
default_method: webroot
webroot: /var/www/html
staging: false
auto_renew: true
reload_hook: systemctl reload nginx

Códigos de saída e logs #

Cada execução devolve um código que podes verificar com echo $? — útil para encadear em scripts:

0OKOperação concluída sem alterações pendentes.
1ERRErro genérico não classificado. Revê o log.
2USAGEArgumentos inválidos ou em falta.
3CHALLENGEA validação ACME falhou (DNS/HTTP).
4RATELIMITLimite da Let's Encrypt atingido.
5RELOADEmissão OK mas o reload do servidor web falhou.

Segue o log em direto enquanto depuras:

terminal
$ sudo journalctl -u imaxe-tls -f
$ sudo tail -f /var/log/imaxe/tls.log

Exemplos avançados #

Vários domínios num único certificado

O primeiro domínio é o principal; os seguintes são adicionados como SANs, todos num único certificado:

terminal
$ sudo imaxe tls issue ejemplo.com www.ejemplo.com \
    --email [email protected]

Um teste seguro antes de produção

Valida toda a cadeia contra o ambiente de teste para não gastares a tua quota real. Com --standalone não precisas de um servidor web configurado:

terminal
$ sudo imaxe tls issue app.ejemplo.com \
    --email [email protected] --standalone --staging \
  || echo "falló con código $?"

Resolução de problemas #

SintomaCausa provávelSolução
Sai CHALLENGE (código 3)O domínio não resolve para este servidor ou a porta 80 está fechada.Verifica o registo A/AAAA e abre a porta 80 no security group; tenta de novo.
Sai RATELIMIT (código 4)Demasiadas emissões do mesmo domínio numa semana.Usa --staging para testar; espera que a janela se liberte.
O HTTPS carrega mas com um avisoEmitido com --staging: o certificado não é de confiança.Reemite sem --staging para obter um válido.
Sai RELOAD (código 5)O reload_hook aponta para um serviço inexistente.Ajusta o reload_hook em tls.yml e executa renew de novo.

Ficou bloqueado com o módulo TLS?

Escreva-nos com a saída de «imaxe <module> status --json» e respondemos rapidamente.

Contactar o suporte