Настройка Let's Encrypt для поддомена, который указывает на другой хост

Я пытаюсь настроить систему из двух серверов, где один выполняет веб-хостинг, а другой доставляет контент (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? Какие команды мне следует запускать?

0
задан 15 November 2018 в 16:13
2 ответа

Короткий ответ: «Нет». Вам не нужен SSL на дополнительном хосте (foo.com).

Вот все, что вам нужно сделать:

  1. Сгенерировать SSL для cdn.example.com
  2. Настроить обратный HTTP-прокси на вашем cdn.example.com. Таким образом, все запросы HTTPS будут предоставляться с действительным ssl от cdn.example.com, но контент будет обслуживаться с использованием HTTP-контента http://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/;
    }
}
0
ответ дан 24 November 2019 в 01:40

Чтобы добиться желаемого: вы можете скопировать SSL-конфигурацию домена CDN ( https://foo.com ) и отредактировать ее для домена cdn.example.com ; просто замените следы foo.com на cdn.example.com .

Я не могу более подробно рассказать о процессе, так как не знаю конфигурации вашего сервера .

Однако в качестве предложения (поскольку я не знаю ваших точных требований) мне кажется, что вам действительно не нужен отдельный домен для вашего CDN. На другом сервере вы можете просто создать конфигурацию для cdn.example.com .

0
ответ дан 24 November 2019 в 01:40

Теги

Похожие вопросы