我正在处理某些设备的代码,这些设备无法查询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