亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從特定 IP 獲取 HTTPS 資產并跳過 DNS 查找

從特定 IP 獲取 HTTPS 資產并跳過 DNS 查找

Go
LEATH 2022-01-10 16:48:28
我正在為無法查詢 DNS 的設備編寫一些代碼。我將只有端口 80 和 443 可用。以下工作,但當然命中DNS。使用的域是我的個人域,而不是問題所針對的真實域 - 它與工作相關并經過編輯。這只是用來說明問題。package mainimport (    “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 mainimport (    “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 層之前發生?我已經戳了好幾個小時了,不知道如何讓它工作。
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

我假設您的服務器正在使用 SNI,就像示例中使用的一樣。試試這個,看看它是否適合你。


package main


import (


    "crypto/tls"

    "log"

    "net/http"


)


func main() {


    tlsConfig := &tls.Config{

        ServerName: "moupon.co",

    }

    tlsConfig.BuildNameToCertificate()

    transport := &http.Transport{TLSClientConfig: tlsConfig}


    client := &http.Client{Transport: transport}

    req, err := http.NewRequest("GET", "https://216.239.32.21/s/img/logo.png", nil)

    if err != nil {

        log.Fatal(err)

    }

    req.Host = "moupon.co"


    _, err = client.Do(req)

    if err != nil {

        log.Fatal(err)

    }


    log.Fatal("no errors")

}


查看完整回答
反對 回復 2022-01-10
  • 1 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號