Eu tenho um servidor Ubuntu no Digital Ocean, do qual estou executando principalmente um único domínio, com vários subdomínios: domain.com
, sub1.domain.com
, sub2.domain.com
, etc. Cada um tem seu próprio host virtual.
Os Hosts Virtuais são todos configurados através de seus próprios arquivos de configuração em /etc/apache2/sites-available
:
domain.conf // port 80
domain-le-ssl.conf // port 443
sub1.domain.conf
sub1.domain-le-ssl.conf
etc...
Eu tenho uma configuração de certificado SSL para todos eles via Let'sEncrypt / Certbot, forçando um redirecionamento para HTTPS em todos eles. Até agora isso tem funcionado bem. No entanto, agora quero adicionar outro subdomínio, sub3.domain.com
.
Eu copiei os arquivos conf para sub2.domain.com
e mudei os caminhos relevantes, servername, etc.:
sub3.domain.conf:
<VirtualHost *:80>
ServerName sub3.domain.com
DocumentRoot /var/www/sub3_domain/html
<Directory "/var/www/sub3_domain/html">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.html
RewriteRule . index.html
</Directory>
RewriteCond %{SERVER_NAME} =sub3.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
sub3.domain-le-ssl.conf:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName sub3.domain.com
DocumentRoot /var/www/sub3_domain/html
<Directory "/var/www/sub3_domain/html">
# use mod_rewrite for pretty URL support
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.html
RewriteRule . index.html
</Directory>
Include /etc/letsencrypt/options-ssl-apache.conf
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem
</VirtualHost>
</IfModule>
Com toda essa configuração, executei certbot-auto
para renovar meu certificado e adicionar o novo subdomínio ao certificado. Quando perguntado quais sites eu queria adicionar, deixei em branco e pressionei enter para 'all' (sub3.domain foi incluído nessa lista). Em seguida, ele identificou corretamente que eu havia adicionado um novo subdomínio e perguntou se eu queria expandir a licença para cobrir o novo domínio. Aperte 'e' para expandir e pronto, realizando desafios.
De cara, as coisas pareciam um pouco fora, já que, para todos os meus domínios existentes, eles realizaram tls-sni-01
desafios, mas, para o meu novo, ele realizou um desafio http-01
:
tls-sni-01 for domain.com
tls-sni-01 for sub1.domain.com
tls-sni-01 for sub2.domain.com
http-01 for sub3.domain.com
De fato, em alguns segundos, tive a seguinte saída:
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: sub3.domain.com
Type: unauthorized
Detail: Invalid response from
http://sub3.domain.com/.well-known/acme-challenge/lKPYKHvStBag4YFzmfRbO7UpEINC4SYjEPMj-R_J-BY:
"<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p"
No meu conhecimento, eu não tenho nenhum .htaccess particular ou específico ou outras regras que resultem em qualquer subdiretório sendo proibido - e em qualquer caso, por que um teste diferente para aquele servidor?
Eu também tentei isso sem copiar o arquivo sub3.domain-le-ssl.conf
, pois acredito que ele seja gerado por certbot-auto
. O processo e o resultado foram idênticos.