Я пытаюсь настроить систему из двух серверов, где один выполняет веб-хостинг, а другой доставляет контент (CDN) для сервера веб-хоста.
В настоящее время у меня есть два сервера, и на обоих есть Let's Encrypt SSL.
webhost https://example.com
example.com 123.123.123.123
CDN https://foo.com
foo.com 111.111.111.111
Я установил субдомен для мой сервер веб-хостинга:
cdn.example.com
, который указывает на сервер CDN foo.com 111.111.111.111
.
Проблема в том, что cdn.example.com
не имеет Let's Encrypt SSL.
Как я могу получить SSL Let's Encrypt для cdn.example.com
, который указывает на foo.com 111.111.111.111
?
Когда я запускаю:
certbot --apache --cert-name example.com -d cdn.example.com
Выдает ошибку:
Failed authorization procedure. cdn.example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: cdn.example.com Type: unauthorized Detail: Invalid response from http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
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.
Выполняется установка Debian и Apache2 по умолчанию.
Полагаю, мне нужно вручную установить файлы acme-challenge на моем сервере CDN? Какие команды мне следует запускать?
Короткий ответ: «Нет». Вам не нужен SSL на дополнительном хосте (foo.com).
Вот все, что вам нужно сделать:
Конфигурация Apache: https: / /www.digitalocean.com/community/questions/apache-proxypass-and-reverseproxy-to-a-ssl-https-configured-domain
Вот пример того, как я бы сделал это с помощью NGINX:
server {
listen 443 ssl;
server_name cdn.example.com;
ssl on;
#BEGIN OPTIONAL--in case you want to have more stats on foo.com
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header ClientIP $remote_addr;
#END OPTIONAL--
ssl_certificate /etc/ssl/cdn.example.com.pem;
ssl_certificate_key /etc/ssl/cdn.example.com.key;
location / {
proxy_pass http://foo.com:80/;
}
}
Чтобы добиться желаемого: вы можете скопировать SSL-конфигурацию домена CDN ( https://foo.com ) и отредактировать ее для домена cdn.example.com
; просто замените следы foo.com
на cdn.example.com
.
Я не могу более подробно рассказать о процессе, так как не знаю конфигурации вашего сервера .
Однако в качестве предложения (поскольку я не знаю ваших точных требований) мне кажется, что вам действительно не нужен отдельный домен для вашего CDN. На другом сервере вы можете просто создать конфигурацию для cdn.example.com
.