В настоящее время я использую пару контейнеров-докеров. Один для 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