Amazon-S3

Terraform:“S3:path_to_terraform.tfstate”:x509:無法驗證 <IP> 的證書,因為它不包含任何 IP SAN

  • November 7, 2021

我正在使用 s3 來保存我的狀態。因為這是一個自定義 S3(而不是 AWS),所以我將其配置如下(使用 IP + 埠)。

執行 terraform init 時收到此錯誤:

成功配置後端“s3”!除非後端配置發生更改,否則 Terraform 將自動使用此後端。刷新狀態時出錯:RequestError:發送請求失敗,原因是:獲取“https://custom_S3_server_IP:8082/mytest/my_sub_folder/terraform.tfstate”:x509:無法驗證 custom_S3_server_IP 的證書,因為它不包含任何 IP SAN

通常當我遇到這樣的問題時,我認為它是端點(dns)驗證。但似乎我無法使用 Terraform 禁用它。這是我的 S3 配置:

 backend "s3" {
   region = "DEGO"
   skip_region_validation = true
   force_path_style = true
   bucket = "mytest"
   key = "my_sub_folder/terraform.tfstate"
   access_key = "myK"
   secret_key = "myS"
   endpoint = "custom_S3_server_IP:8082"
 } 

編輯:我知道證書不包含輸入的 IP,但是在每個有此問題的客戶端中,總有一種方法可以禁用 dns 驗證。例如 Terraform aws 實現可以使用“–no-verify-ssl”選項來克服這個問題,但我找不到任何使用類似這樣的屬性

您的 S3 伺服器的 TLS 證書沒有在其主題備用名稱欄位中列出 IP 地址。您需要在具有此證書的 S3 伺服器中使用適當的證書。

一個更簡單的替代方法是在 URL 中使用 DNS 名稱,並確保您的證書在其 SAN 欄位中具有 DNS 名稱。

似乎目前沒有使用 terraform s3 作為狀態桶來禁用 tls 驗證的選項。

這是一個未解決問題的參考:

https://github.com/hashicorp/terraform/issues/26883

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