我正在處理某些設備的代碼,這些設備無法查詢DNS。我將只有端口80和443可用。從特定IP獲取HTTPS資產並跳過DNS查找
以下工作,但當然命中DNS。所使用的域名是我的個人域名,而不是真正的域名問題所在 - 它與工作相關並被編輯。這只是用來說明問題。
package main
import (
「log」
「net/http」
)
func main() {
client := &http.Client{}
req, err := http.NewRequest(「GET」, 「https://donatstudios.com/images/Spacecat/spacecat.svg」, nil)
if err != nil {
log.Fatal(err)
}
_, err = client.Do(req)
if err != nil {
log.Fatal(err)
}
log.Fatal(「no errors」)
}
我更改代碼打到特定的IP地址ALA:
package main
import (
「log」
「net/http」
)
func main() {
client := &http.Client{}
req, err := http.NewRequest(「GET」, 「https://162.243.23.224/images/Spacecat/spacecat.svg」, nil)
if err != nil {
log.Fatal(err)
}
req.Host = 「donatstudios.com」
_, err = client.Do(req)
if err != nil {
log.Fatal(err)
}
log.Fatal(「no errors」)
}
現在收到「爲162.243.23.224不能驗證證書,因爲它不包含任何的IP SAN」
當沒有使用https域上述代碼工作。
大概這與SSL有關。 #go-nuts告訴我他們相信在它發生HTTP層之前會發生這種情況?我一直在探索這個小時,並不知道如何使它工作。
您的服務器是否使用SNI(https://en.wikipedia.org/wiki/Server_Name_Indication)? – Sean