Назад | Перейти на главную страницу

NGINX позволяет зашифровать «Получено 2 сертификата (ов)»

В настоящее время я использую пару контейнеров-докеров. Один для nginx, один для моего приложения js node и последний для создания и обновления сертификатов от Let's encrypt. Некоторое время это работало неплохо, но у меня возникла проблема.

На этом сервере у меня есть 5 доменов, на всех которых установлен ssl. Но теперь я не могу больше устанавливать сертификаты. Я получаю это:

- The following errors were reported by the server:

  Domain: domain1.com
  Type:   unauthorized
  Detail: Incorrect validation certificate for tls-sni-01 challenge.
  Requested
  c7a966714b5363c594f152b27f947722.f767e462430a051872cd4eaab3969248.acme.invalid
  from MY_IP:443. Received 2 certificate(s), first
  certificate had names "domain0.com"

Осмотревшись, я вижу, что если я пойду в "https://domain1.com/"Меня встречает сообщение об ошибке, которое гласит:

Safari не может подтвердить подлинность веб-сайта domain1.com.

Когда я нажимаю "Показать сертификат", он показывает мне сертификат domain0.com.

Вот конфиг для domain0.com

server {
    listen 80;
    server_name domain0.com;

    location /.well-known/acme-challenge {
        proxy_pass http://certbot:80;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443;
    server_name domain0.com;
    client_max_body_size 50M;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/domain0.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain0.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;

    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams.pem;

    location /.well-known/acme-challenge {
        proxy_pass http://certbot:443;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }

    location / {
        proxy_pass http://cldapi1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Protocol https;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

certbot - это ссылка на контейнер, позволяющий зашифровать, а cldapi1 - это ссылка на приложение узла.

Я предполагаю, что это сервер по умолчанию, потому что это первый блок сервера в конфигурации nginx. Но когда я пытаюсь создать сервер ssl по умолчанию, это не сработает, потому что у меня нет сертификатов для сервера по умолчанию, и если бы у меня был один, который не работал бы хорошо, давайте шифрование.

Я думаю, мне нужен способ не позволять серверу отвечать сертификатом ssl, когда позволяет encrypt ищет его.

Если у вас есть предложения или вопросы, дайте мне знать!

Я использую nginx версии 1.11.9 и certbot версии 0.9.3

Я решил эту проблему, используя этот параметр при запросе сертификатов

--standalone-supported-challenges http-01