當我這樣做時curl https://10.184.96.62:3000/status,服務器發回 json 數據。都好。使用下面的 golang 代碼,應用程序打?。?019/05/21 18:29:15 獲取https://10.184.96.62:3000/status:x509:無法驗證 10.184.96.62 的證書,因為它不包含任何 IP SANpackage mainimport ( "log" "net/http")func main() { _, err := http.Get("https://10.184.96.62:3000/status") if err != nil { log.Fatal(err) }}我錯過了什么?
2 回答

蠱毒傳說
TA貢獻1895條經驗 獲得超3個贊
錯誤消息指示的問題特定于 HTTPS 與 IP 地址的組合:通常 SSL 證書使用主機名來檢查服務器的真實性。在您的情況下,沒有主機名,而是 IP 地址。您的問題有兩種可能的解決方案:
使用主機名而不是 IP 地址并將該主機名放入您的證書中。
將您要使用的 IP 地址放入
subjectAltNames
證書的(“主題備用名稱”- SAN)字段中(請參閱RFC 5280)。

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
問題出在我生成的證書上。我曾經openssl
創建一個自簽名證書。正如我分享的那樣,curl
能夠使用它與服務器建立連接。但不是 go 應用程序。
在某個論壇上,我看到一條評論說openssl
在這種情況下開始工作很棘手。所以我用這個go代碼來生成證書。使用此證書,go app 還能夠在不對我在問題中共享的源代碼進行任何更改的情況下發出請求。
希望這可以幫助有需要的人。
- 2 回答
- 0 關注
- 171 瀏覽
添加回答
舉報
0/150
提交
取消