Я хочу установить сертификат шифрования на мой сервер для domain.com
, www.domain.com
и mail.domain.com
. поэтому я создал следующие domain-site.conf
файл для виртуальных хостов:
<VirtualHost *:80>
ServerAdmin admin@domain.com
DocumentRoot "/home"
ServerName domain.com
ServerAlias www.domain.com
ErrorLog "/var/log/httpd/domain.error_log"
CustomLog "/var/log/httpd/domain.access_log" common
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.domain.com [OR]
RewriteCond %{SERVER_NAME} =domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@domain.com
DocumentRoot "/home"
ServerName mail.domain.com
ErrorLog "/var/log/httpd/mail.domain.error_log"
CustomLog "/var/log/httpd/mail.domain.access_log" common
</VirtualHost>
а потом, когда я бегу sudo certbot --apache
и нажмите Enter, чтобы установить сертификат для всех трех имен, он не может установить сертификат для mail.domain.com
и дает следующий результат. как решить вопрос?
You have an existing certificate that contains a portion of the domains you
requested (ref: /etc/letsencrypt/renewal/domain.com.conf)
It contains these names: domain.com, www.domain.com
You requested these names for the new certificate: domain.com, mail.domain.com,
www.domain.com.
Do you want to expand and replace this existing certificate with the new
certificate?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(E)xpand/(C)ancel: e
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for mail.domain.com
Waiting for verification...
Challenge failed for domain mail.domain.com
http-01 challenge for mail.domain.com
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: mail.domain.com
Type: unauthorized
Detail: Invalid response from
http://mail.domain.com/.well-known/acme-challenge/9heljxXRzeVUNLhilu3-Fr3fZ6YeCaPUQpna01etyoU
[ip]: "<html>\r\n<head><title>404 Not
Found</title></head>\r\n<body>\r\n<center><h1>404 Not
Found</h1></center>\r\n<hr><center>nginx/1.18.0 (Ub"
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
Эта ошибка означает, что для файла certbot существует HTTP 404, который он ожидает увидеть в mail.domain.com/.well-known/acme-challenge/9heljxXRzeVUNLhilu3-Fr3fZ6YeCaPUQpna01etyoU
Вы видите этот файл в /home/.well-known/acme-challenge/9heljxXRzeVUNLhilu3-Fr3fZ6YeCaPUQpna01etyoU
?
Можете ли вы написать туда свой собственный файл, чтобы проверить, что он обслуживается?
echo wat > /home/.well-known/acme-challenge/wat
Тогда вы сможете скрутить его с помощью:
curl mail.domain.com/.well-known/acme-challenge/wat
При условии mail.domain.com
имеет тот же docroot, что и domain.com
и www.domain.com
вы также должны уметь curl domain.com/.well-known/acme-challenge/wat
и curl www.domain.com/.well-known/acme-challenge/wat
Если это не сработает, значит, что-то не так с вашей конфигурацией Apache или, возможно, с правами собственности / разрешениями /home
, /home/.well-known
или /home/.well-known/acme-challenge
поэтому проблема была связана с конфигурациями зоны пересылки DNS. Я определил mail IN A 192.168.0.60
в передней зоне и 60 IN PTR mail.domain.com
в обратной зоне. Я изменил запись в передней зоне на mail IN A <server_ip>
и проблема исчезла.