У меня есть сервер Ubuntu в Digital Ocean, с которого я использую в основном один домен с несколькими поддоменами: domain.com
, sub1.domain.com
, sub2.domain.com
и т.д. У каждого есть свой виртуальный хост.
Все виртуальные хосты настраиваются с помощью собственных файлов конфигурации в /etc/apache2/sites-available
:
domain.conf // port 80
domain-le-ssl.conf // port 443
sub1.domain.conf
sub1.domain-le-ssl.conf
etc...
У меня есть настройка SSL-сертификата для всех из них через Let'sEncrypt / Certbot, принудительное перенаправление на HTTPS для всех из них. До сих пор это работало нормально. Однако теперь я хочу добавить еще один поддомен, sub3.domain.com
.
Я скопировал файлы conf для sub2.domain.com
и изменил соответствующие пути, имя сервера и т. д .:
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>
После всех этих настроек я запустил certbot-auto
для обновления моего сертификата и добавления нового поддомена к сертификату. Когда меня спросят, какие сайты я хочу добавить, я оставил поле пустым и нажал Enter для «все» (sub3.domain был включены в этот список). Затем он правильно понял, что я добавил новый поддомен, и спросил, хочу ли я расширить лицензию, чтобы охватить новый домен. Нажмите «e» для расширения, и все пошло, выполняя задачи.
Сразу все показалось немного неправильным, так как для всех моих существующих доменов он работал tls-sni-01
проблемы, но для моего нового он выполнил 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
Конечно, через несколько секунд я получил следующий результат:
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"
Насколько мне известно, у меня нет каких-либо конкретных или конкретных правил .htaccess или других подобных правил, которые привели бы к запрещению любого подкаталога - и в любом случае, зачем проводить другой тест для этого одного сервера?
Я тоже пробовал это, не копируя sub3.domain-le-ssl.conf
файл, поскольку я считаю, что он действительно создается certbot-auto
. Процесс и результат были идентичны.