Header Ads

Como solicitar um certificado LetsEncrypt usando Acme

LetsEncrypt mudou o mundo do certificado SSL quando sua oferta de certificados SSL gratuitos e de curta duração permitiu a uma grande quantidade de indivíduos e empresas proteger seus aplicativos da Web sem nenhum custo. Com esse serviço, a infraestrutura necessária precisaria existir e, para esse fim, surgiram uma infinidade de aplicativos que atendem às necessidades de emissão de SSL.

Um dos utilitários mais comuns é o do CertBot, que pode funcionar bem, mas outro aplicativo de código aberto disponível é o acme. sh. Este é um cliente ACME inteiramente baseado em shell (o protocolo usado pelo LetsEncrypt para emitir certificados SSL). Com muitas funcionalidades avançadas integradas, esse cliente permite configurações complexas.

Instalando o Acme. sh

A maneira mais fácil de instalar [acme. sh] (< http: //acme. sh>) é a seguinte, que baixa e executa o script a partir daqui, https://raw. githubusercontent. com/acmesh- oficial / acme. sh / master / acme. sh.

 enrolar < https: //get. acme. sh> | sh 

A fonte desse site está localizada aqui, se você quiser verificar o que o script real está fazendo

A instalação fará o download e moverá os arquivos para ~ / . acme. sh e instalará um alias no arquivo ~ / . bashrc. Além disso, um trabalho cron será instalado, se disponível.

Primeiros passos

Muito de como você usa [acme. sh] (< http: //acme. sh>) depende do método e do aplicativo para o qual você está solicitando o certificado. O Acme. sh oferece muitos métodos diferentes para solicitar um certificado, como:

  • Modo Webroot
  • Modo autônomo
  • Modo tls-alpn autônomo
  • Modo Apache
  • Modo Nginx
  • Modo DNS
  • modo alternativo de DNS
  • modo sem estado

Neste artigo, vou demonstrar duas maneiras diferentes de solicitar um certificado. Estou incluindo configurações de servidor da Web para NGINX e Apache, que usa o método Webroot. O método do modo DNS usa um arquivo de configuração para criar registros CNAME usados ​​para verificar o domínio, em vez de criar um arquivo no sistema de arquivos.

Configuração do servidor Web

Configuração de NGINX LetsEncrypt

O NGINX facilita a criação de uma configuração compartilhada para usar ao usar o método webroot de solicitação de um certificado.

letsencrypt. conf

Recomenda-se criar uma configuração independente que possa ser incluída conforme necessário nas configurações do vhost, da seguinte forma: include /etc/nginx/letsencrypt. conf

 # Regra para solicitações legítimas do Desafio ACME (como /. well-known/acme-challenge/xxxxxxxxx) # Usamos ^ ~ aqui, para não verificar outras regexes (para acelerar). Na verdade, DEVEMOS cancelar # outras verificações de regex, porque em nossos outros arquivos de configuração temos uma regra de regex que nega acesso a arquivos com nomes pontilhados. location ^ ~ /. well-known/acme-challenge/ {# Defina o tipo de conteúdo correto. De acordo com o seguinte: # < https: //community. letsencrypt. org/t/using-the-webroot-domain-verification-method/1445/29> # A especificação atual requer "texto / sem formatação" ou nenhum cabeçalho de conteúdo. # Parece que "text / plain" é uma opção segura. default_type "text / plain"; } # Acesso direto retorna um local 404 = /. well-known/acme-challenge/ {return 404; } 

Apache

Assim como o NGINX, o Apache pode criar um arquivo de configuração separado. Um exemplo dessa configuração é mostrado abaixo.

/etc/apache2/conf-available/letsencrypt. conf

Nesse caso, a configuração do Apache é específica para o host virtual devido à necessidade de incluir a localização do disco. A seguir, é um local comum, mas pode ser diferente dependendo da sua configuração específica.

 Alias ​​/. well-known/acme-challenge/ "/var/www/html/. well-known/acme-challenge/" < Diretório "/ var / www / html /" > AllowOverride None Opções Índices MultiViews SymLinksIfOwnerMatch IncluiNoExec Método de solicitação GET POST OPTIONS < / Directory > [/PRÉ]

Configuração de DNS

Neste artigo, estou demonstrando o modo DNS usando o Cloudflare, pois oferece alterações extremamente rápidas no DNS e funciona excepcionalmente bem com esse método.

O Acme. sh usa duas variáveis ​​ambientais para o método dns_cf: CF_Key e CF_Email. Para incluir isso em seu ambiente na inicialização, você pode incluir essa configuração no seu arquivo . bashrc.

Pode não ser facilmente aparente, mas existe um espaço anterior a cada comando de exportação, o que geralmente garante que eles não serão lidos no histórico, apenas por precaução.

 exportar CF_Key = "######### ..." exportar CF_Email = "cfaccount@email. com" 

Emitir certificado pelo método Webroot

Ao emitir o seguinte comando, dois domínios são definidos em um único certificado. Isso é para garantir que, quando um nome de host for solicitado (e muitas vezes redirecionado para o canônico), a solicitação ainda será protegida por uma conexão segura.

 acme. sh - emissão -d exemplo. com -d www. example. com -w / var / www / html 

Certificados emitidos estão em /. acme. sh/acme. sh/

Emitir certificado pelo método DNS

Ao usar o método de emissão de DNS, um registro txt temporário é criado por meio da API Cloudflare e LetsEncrypt verifica o domínio usando esse registro temporário. Este é um método mais limpo, pois não é necessária nenhuma configuração de raiz da web.

 # Vários domínios acme. sh --issue --dns dns_cf -d example. com -d www. example. com 

Certificados emitidos estão em /. acme. sh/acme. sh/

Renovando certificado

Por padrão, Acme. sh, criará um cronjob como a seguinte entrada:

 48 0 * * * "/home/user/. acme. sh/acme. sh" --cron --home "/home/user/. acme. sh" > / dev / null 

Para forçar uma renovação, você pode emitir o seguinte comando, que usará o mesmo método de emissão usado originalmente:

 acme. sh - novo -d exemplo. com - d www. exemplo. com 

Removendo certificados

Se você não deseja mais renovar um certificado, é muito fácil removê-lo. Porém, isso não remove o certificado do disco. Para fazer isso, você precisará navegar para ~ / . acme. sh / e remover o diretório que contém os certificados.

 acme. sh - remova -d exemplo. com -d www. example. com 

Isso permite limpar os certificados configurados para renovação, que você pode verificar listando os certificados da seguinte forma:

 acme. sh --list 

Conclusão

LetsEncrypt oferece um serviço excelente e fácil de usar para provisionar certificados SSL para uso em sites. Criar um site seguro é mais fácil do que nunca, e usar o cliente acme. sh significa que você tem controle total sobre como isso ocorre no seu servidor da Web.

Com vários métodos diferentes para obter um certificado, mesmo métodos muito seguros, como um domínio delegado, permitem recuperar adequadamente os certificados necessários.

Via: How to Geek

Deixe um Comentário

Nenhum comentário