Criando certificados LetsEncrypt Wildcard com o Certbot
O que é um certificado wildcard?
Em resumo é um certificado coringa que vai funcionar com qualquer entrada em primeiro nível.
Por exemplo, se eu criar um certificado wildcard como o abaixo
*.gutocarvalho.net
Qualquer domínio em primeiro nível vai conseguir utilizar os certificados, exemplos:
gitlab.gutocarvalho.net
jitsi.gutocarvalho.net
mattermost.gutocarvalho.net
nextcloud.gutocarvalho
Agora veja, wildcard só funciona em primeiro nível, se voce tentar usar em níveis abaixo, em segundo nível como o exemplo abaixo…
app.dev.gutocarvalho.net
… não vai dar bom, neste caso você precisaria criar um certificado wildcard para *.dev.gutocarvalho.net.
É isso, chega de teoria, vamos colocar a mão na massa. ;)
Ambiente
- ProxMox 6.1
- CentOS 7
- Certbot 1.3.0
- CentOS 7
PreReqs
- Crie um entrada *.seudominio.com.br em seu provedor de DNS
- Essa entrada deve apontar para seu balanceador ou reverse proxy.
Preparando a coisa
yum install -y epel-release
Instalando o certbot
yum install -y certbot python2-certbot-dns-cloudflare-1.3.0-2.el7.noarch
Gerando o cerfificado wildcard
Vamos rodar o comando
certbot --server https://acme-v02.api.letsencrypt.org/directory -d gutocarvalho.net,*.gutocarvalho.net --manual --preferred-challenges dns-01 certonly
Veja que eu passo gutocarvalho.net,*.gutocarvalho.net no parâmetro -d, isso é essencial, não esqueça de colocar o domínio principal junto ao wildcard.
Agora vamos ver a saída esperada.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for gutocarvalho.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.
Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.gutocarvalho.net with the following value:
glkhjdljlJKDlkdjksdhlkshjd-_ctdL5ve8Vn2Nnd0
OK, aqui precisamos ir no nosso provedor de DNS e criar a entrada abaixo
_acme-challenge.
com o seguinte conteúdo
glkhjdljlJKDlkdjksdhlkshjd-_ctdL5ve8Vn2Nnd0
Beleza, depois mandar um ENTER e continue
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/gutocarvalho.net-0001/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/gutocarvalho.net-0001/privkey.pem
Your cert will expire on 2020-07-17. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
O certificados foram gerados em /etc/letsencrypt/live/gutocarvalho.net
[root@lb conf.d]# ls /etc/letsencrypt/live/gutocarvalho.net/ -1
cert.pem
chain.pem
fullchain.pem
privkey.pem
README
Certificados gerados, agora você pode usar em seu NGINX, Apache HTTPd ou qualquer outro serviço que deseje utilizar SSL.
Enjoy!
[s] Guto
Se você precisa de ajuda para começar a utilizar certificados LetsEncrypt, fale com a JAC, nosso braço de projetos e consultoria!A JAC oferece um atendimento diferenciado e profissionais bem antenados, pode confiar :)[contato@jac.bsb.br]https://jac.bsb.br