Criar Certificados Wildcard no Ubuntu com o Let´s Encrypt

Pré-requisitos

  • Crie uma entrada do tipo A no seu servidor DNS:

*.seudominio.com.br

Instalar o Certbot

Adicionar o repositório
sudo add-apt-repository ppa:certbot/certbot

Atualizar pacotes
sudo apt update

Instalar o certbot
sudo apt install certbot

Gerar o certificado Wildcard

  • Execute o seguinte comando:
    sudo certbot --server https://acme-v02.api.letsencrypt.org/directory -d seudominio.com.br,*.seudominio.com.br --manual --preferred-challenges dns-01 certonly
  • Outra versão do comando:
    sudo certbot certonly --manual -d *.example.com -d example.com --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

A saída que teremos é a seguinte:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Obtaining a new certificate
Performing the following challenges:
dns-01 challenge for example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
sdsdfj2812121m2n1nsmnsmnxzmxnzmxnzmxnzmxnzmxnzmxzx
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Neste passo, você precisa criar um registro DNS TXT com o nome _acme-challenge e o valor o que segue nas instruções. Espere pelo menos um minuto para confirmar a alteração e pressione ENTER.

A saída deverá ser a seguinte:

Press Enter to Continue
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2019-02-27. 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

Parabéns! Seu certificado wildcard foi gerado. Você poderá utilizar este certificado com qualquer subdomínio que você criar para seu domínio.

Agora você precisa configurar manualmente o virtual host do Apache com o caminho correto para o certificado.

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/www.example.com/public_html
<Directory /var/www/www.example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Agora verifique a sintaxe de sua configuração:

sudo apache2ctl configtest

Uma vez que a sintaxe do arquivo está correta, reinicie o Apache para carregar a nova configuração:

sudo systemctl reload apache2.service

Certbot agora consegue encontrar o correto VirtualHost e atualiza-lo.

Exemplo de arquivo de configuração do apache se-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
# SERVER
ServerAdmin [email protected]
ServerName aspineasy.com.br
#ServerAlias *.aspineasy.com.br

# TOMCAT PROXY
ProxyPreserveHost On

<Proxy *>
Order allow,deny
Allow from all
</Proxy>

ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

# LOG
ErrorLog /var/log/apache2/error-aspineasy.log
CustomLog /var/log/apache2/access-aspineasy.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =aspineasy.com.br
#RewriteCond %{SERVER_NAME} =*.aspineasy.com.br [OR]
#RewriteCond %{SERVER_NAME} =oeco.aspineasy.com.br [OR]
#RewriteCond %{SERVER_NAME} =jornalintegracao.aspineasy.com.br [OR]
#RewriteCond %{SERVER_NAME} =oimparcial.aspineasy.com.br [OR]

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/aspineasy.com.br-0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/aspineasy.com.br-0001/privkey.pem
</VirtualHost>
</IfModule>

https://mindnotes.sh/letsencrypt-wildcard/

Deixe uma resposta