Acredito que os dois problemas que estou tendo estão relacionados, mas não sei por onde começar. O primeiro problema é que quando um domínio específico que resolve para meu servidor é solicitado, seu arquivo conf em sites-enabled é ignorado, assim como 000-default.conf, em vez disso, o primeiro conf em ordem alfabética é usado e esse site aparece, mas com o domínio que solicitei na barra do navegador.
Isso só acontece com esse domínio, o que leva ao segundo problema. Tenho um certificado multidomínio (CA) e todos os domínios nele aparecem como esperado. Tenho um certificado certbot instalado para esse outro domínio. Quando uso o openssl com o nome de domínio desse outro domínio, ele mostra o conteúdo do certificado multidomínio. Quando uso um verificador SSL, obtenho os mesmos resultados, com ele notando que o nome de domínio que inseri não está incluído no certificado.
Percebi que quando executo apachectl -S antes de listar os arquivos *:443 e *:80, ele lista um host virtual com o endereço IP do servidor como o servidor nomeado, e o primeiro arquivo listado não é o 000-default (que É listado como o primeiro para *:80 e *:443), mas o próximo em ordem alfabética.
O domínio problemático é halgrossman.com.
halgrossman.com.conf
<VirtualHost *:80>
ServerName halgrossman.com
ServerAlias www.halgrossman.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/drupal/halgrossman/web
<Directory /var/www/html/drupal/halgrossman/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
halgrossman.com-le-ssl.conf
<VirtualHost *:443>
ServerName halgrossman.com
ServerAlias www.halgrossman.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/drupal/halgrossman/web
<Directory /var/www/html/drupal/halgrossman/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/halgrossman.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/halgrossman.com/privkey.pem
</VirtualHost>
Saída do openssl
openssl s_client -connect halgrossman.com:443 -servername halgrossman.com
CONNECTED(00000003)
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = theaccidentalcoder.com
verify return:1
---
Certificate chain
0 s:CN = theaccidentalcoder.com
i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Sep 2 00:00:00 2024 GMT; NotAfter: Dec 21 23:59:59 2024 GMT
1 s:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA384
v:NotBefore: Nov 2 00:00:00 2018 GMT; NotAfter: Dec 31 23:59:59 2030 GMT
2 s:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA384
v:NotBefore: Mar 12 00:00:00 2019 GMT; NotAfter: Dec 31 23:59:59 2028 GMT
3 s:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA1
v:NotBefore: Jan 1 00:00:00 2004 GMT; NotAfter: Dec 31 23:59:59 2028 GMT
theaccidentalcoder.com é o domínio principal em um certificado CA multidomínio, do qual halgrossman.com não faz parte.
Saída do verificador SSL
halgrossman.com resolves to 45.56.118.187
Server Type: Apache/2.4.52 (Ubuntu)
The certificate should be trusted by all major web browsers (all the correct intermediate certificates are installed).
The certificate was issued by Sectigo.
The certificate will expire in 84 days.
None of the common names in the certificate match the name that was entered (halgrossman.com). You may receive an error when accessing this site in a web browser. Learn more about name mismatch errors.
Common name: theaccidentalcoder.com
SANs: theaccidentalcoder.com, ascaatl.org, guildbuildersinc.com, musictohealby.com, souknook.com, thetouristlife.com
Valid from September 1, 2024 to December 21, 2024
Saída de apache2ctl -S
45.56.118.187:443 is a NameVirtualHost
default server guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:37)
port 443 namevhost guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:37)
port 443 namevhost musictohealby.com (/etc/apache2/sites-enabled/musictohealby.com.conf:37)
port 443 namevhost theaccidentalcoder.com (/etc/apache2/sites-enabled/theaccidentalcoder.com.conf:23)
port 443 namevhost thetouristlife.com (/etc/apache2/sites-enabled/thetouristlife.com.conf:21)
*:443 halgrossman.com (/etc/apache2/sites-enabled/halgrossman.com-le-ssl.conf:2)
*:80 is a NameVirtualHost
default server halgrossman.com (/etc/apache2/sites-enabled/00-default.conf:1)
port 80 namevhost halgrossman.com (/etc/apache2/sites-enabled/00-default.conf:1)
alias www.halgrossman.com
port 80 namevhost default (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost guildbuildersinc.com (/etc/apache2/sites-enabled/guildbuildersinc.com.conf:1)
alias www.guildbuildersinc.com
port 80 namevhost halgrossman.com (/etc/apache2/sites-enabled/halgrossman.com.conf:1)
alias www.halgrossman.com
port 80 namevhost musictohealby.com (/etc/apache2/sites-enabled/musictohealby.com.conf:1)
alias www.musictohealby.com
port 80 namevhost theaccidentalcoder.com (/etc/apache2/sites-enabled/theaccidentalcoder.com.conf:1)
alias www.theaccidentalcoder.com
port 80 namevhost thetouristlife.com (/etc/apache2/sites-enabled/thetouristlife.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Note que a lista de domínios que aparece primeiro é listada para o IP e não inclui 000-default. O que ** lista ** primeiro, guildbuildersinc.com, é o primeiro, em ordem alfabética, depois de 000-default, e o site que aparece ao solicitar https://halgrossman.com .
Neste caso, descobriu-se que os arquivos conf para os domínios no certificado multidomínio tinham uma entrada 443 de:
em vez de
Então o Apache estava parando no primeiro arquivo codificado como tal. Quando eu corrigia o primeiro, alfabeticamente, ele parava no próximo e retornava aquele site, e assim por diante. Alterar todos os arquivos .conf para ter a linha correta corrigiu o problema.