NGINX 允许加密“已收到 2 个证书”

NGINX 允许加密“已收到 2 个证书”

我目前正在运行几个 docker 容器。一个用于 nginx,一个用于我的 node js 应用程序,最后一个用于从 lets 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 是指向 lets encrypt 容器的链接,cldapi1 是指向节点应用程序的链接。

我猜这是默认服务器,因为它是 nginx 配置中的第一个服务器块。但是当我尝试创建 SSL 默认服务器时,它不起作用,因为我没有默认服务器的证书,而且如果我有一个证书,它无法与 lets encrypt 很好地兼容。

我认为我需要一种方法来在让加密寻找 SSL 证书时不让服务器使用 SSL 证书进行响应。

如果您有任何建议或问题,请告诉我!

我正在运行 nginx 版本 1.11.9 和 certbot 版本 0.9.3

答案1

我已经通过在请求证书时使用此参数解决了这个问题

--standalone-supported-challenges http-01

相关内容