Nginx

NGINX 允許加密“收到 2 個證書”

  • December 24, 2017

我目前正在執行幾個 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 是 let encrypt 容器的連結,cldapi1 是節點應用程序的連結。

我猜這是預設伺服器,因為它是 nginx 配置中的第一個伺服器塊。但是,當我嘗試創建一個 ssl 預設伺服器時,它不會工作,因為我沒有預設伺服器的證書,如果我有一個不能很好地使用 let encrypt 的證書。

我想我需要一種方法來不讓伺服器在讓 encrypt 查找時使用 ssl 證書進行響應。

如果您有任何建議或問題,請告訴我!

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

我在請求證書時使用此參數解決了這個問題

--standalone-supported-challenges http-01

引用自:https://serverfault.com/questions/850445