Я пытаюсь настроить двухсерверную систему, где один выполняет веб-хостинг, а другой - доставку контента (CDN) для сервера веб-хоста.
В настоящее время у меня есть два сервера, и на обоих есть Let's Encrypt SSL.
веб-хостинг 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-конфигурацию домена CDN (https://foo.com) и отредактируйте его для домена cdn.example.com
; просто замените следы foo.com
с участием cdn.example.com
.
Я не могу более подробно рассказать об этом процессе, так как не знаю конфигурации вашего сервера.
Однако в качестве предложения (поскольку я не знаю ваших точных требований) мне кажется, что вам действительно не нужен отдельный домен для вашего CDN. На другом сервере вы можете просто создать конфигурацию для cdn.example.com
.
Короткий ответ: «Нет». Вам не нужен 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/;
}
}