Ubuntu

tls 握手失敗。不包含任何 IP SAN

  • June 26, 2020

我正在嘗試設置 logstash 轉發器,但在建立適當的安全通道時遇到了問題。嘗試使用在 virtualbox 中執行的兩台 ubuntu(伺服器 14.04)機器來配置它。它們是 100% 乾淨的(除了 logstash 所需的 java、ngix、elastisearch 等之外,沒有觸及 hosts 文件或安裝任何其他包)

我不認為這是一個 logstash 問題,而是證書處理不當或在 logstash ubuntu 或轉發器機器上設置不正確。

我生成了密鑰:

sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

我在logstash伺服器上的輸入配置:

input {
 lumberjack {
   port => 5000
   type => "logs"
   ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
   ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
 }
}

密鑰被複製到轉發器主機,它具有以下配置。

{
 "network": {
   "servers": [ "192.168.2.107:5000" ],
   "timeout": 15,
   "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
   "ssl key": "/etc/pki/tls/certs/logstash-forwarder.key"
 },
 "files": [
   {
     "paths": [
       "/var/log/syslog",
       "/var/log/auth.log"
      ],
     "fields": { "type": "syslog" }
   }
  ]
}

在執行 logstash 伺服器的情況下,我在轉發器機器上**“sudo service logstash-forwarder start”**,給了我以下重複錯誤:

Jul  9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.589762 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul  9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.595105 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs
Jul  9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.595971 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul  9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.602024 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs

正如我之前提到的,我認為這不是 logstash 問題,而是證書/機器配置問題。問題是,我似乎無法解決它。希望這裡有一些聰明的頭腦可以幫助我嗎?

謝謝

… 無法與 192.168.2.107 x509 握手:無法驗證 192.168.2.107 的證書,因為它不包含任何 IP SAN

SSL 需要辨識對等方,否則您的連接可能會針對中間人,該中間人會解密 + 嗅探/修改數據,然後將它們再次加密轉發給真正的目標。使用 x509 證書進行辨識,這些證書需要針對受信任的 CA 進行驗證,並且需要辨識您要連接的目標。

通常目標以主機名的形式給出,並根據證書的主題和主題替代名稱進行檢查。在這種情況下,您的目標是 IP。驗證證書成功,IP 必須在主題備用名稱部分內的證書中提供,但不是作為 DNS 條目(例如主機名),而是作為 IP。

所以你需要的是:

  1. /etc/ssl/openssl.cnf logstash 主機上編輯您的- 添加 部分。subjectAltName = IP:192.168.2.107``[v3_ca]
  2. 重新創建證書
  3. 將證書和密鑰複製到兩台主機

PS 考慮-days 365在證書創建命令行中添加或更多,因為預設證書有效期僅為 30 天,您可能不想每個月都重新創建它。

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