Ubuntu16.04:Nginx 1.10:Nginx 提供多個憑證資訊。 SSL 在瀏覽器上完美運行,但面臨curl 問題。捲曲錯誤 51

Ubuntu16.04:Nginx 1.10:Nginx 提供多個憑證資訊。 SSL 在瀏覽器上完美運行,但面臨curl 問題。捲曲錯誤 51

我在 ubuntu 伺服器(16.04)上有多個帶有 nginx/1.10.0 + Letsencrypt 的網站。

從瀏覽器中的外觀來看,SSL 運作良好且完美。但是我們的開發人員應用程式使用curl請求(帶有SSL)並且面臨錯誤,如下所示

Update Failed: Download failed. cURL error 51: SSL: certificate subject name 'domain2.com' does not match target host name 'domain1.com'

使用 SSLLABS 檢查時,它顯示 A_grade 但正在載入多個憑證(同一伺服器中另一個網域的憑證)

Certificate #1: RSA 2048 bits (SHA256withRSA)

Certificate #2: RSA 2048 bits (SHA256withRSA) No SNI

在第二個證書下,存在以下錯誤。

Common names    domain2.com   MISMATCH
Trusted No   NOT TRUSTED

Curl 錯誤也提到了第二個網域。

cURL error 51: SSL: certificate subject name 'domain2' does not match target host name 'domain1'

domain2 是完全不同的網站。不知道 nginx 如何將其訊息與domain1一起發送。

此外,我還透過使用 Letsencrypt SSL 建立網域在其他伺服器中測試了相同的場景,並且所有伺服器都存在相同的問題。與 SSLlabs 檢查時ssllabs 檢查器它能夠取得網域 2 憑證詳細資訊以及網域 1。

如果我使用 SSLlabs 檢查domain2,它將獲取同一伺服器中的任何其他網域憑證。 (但如果存在網域 A、B、C、D,則其中一個網域 SSL 檢查將只取得一個憑證。這不是問題,所有其他網域都會有此問題。)

附截圖。 (長整頁螢幕截圖)。我認為這會澄清這個案子:(

螢幕截圖

**我無法在應用程式中使用不安全的 Curl 請求,這會忽略此問題並使curl 請求成功。如果有人對此有想法請幫忙。我在這背後花了很多時間,仍然...

上述問題是針對 Wordpress 外掛程式的,因此無法隨curl 新增特定參數。 (來自WP核心)

提前致謝。

答案1

使用的curl版本似乎缺少基本的神經網路研究所支持。當多個具有 SSL 的網域託管在同一 IP 位址上時,SNI 是必要的。

您基本上有三個選擇:

  • 將curl更新到支援SNI的版本。
    對此的支持是7.18.1版本中引入
  • 在您的用戶端上自行新增主機參數:
    -H "Host: domain1.com"
  • 移動域以使用不同的 IP 位址。這樣就無需對客戶端進行任何更改。

相關內容