2 回答

TA貢獻1876條經驗 獲得超7個贊
openssl s_client
只是一個連接的測試工具,但它并不關心證書是否對連接有效。Go 反而關心證書是否可以被驗證,因此您會得到證書無效的信息,因為名稱不匹配。
我做錯了什么?
根據錯誤消息,您確實通過錯誤的主機名訪問了主機?;蛘吣姆掌髋渲貌划敚灾劣谒l送了錯誤的證書。

TA貢獻1804條經驗 獲得超2個贊
我不需要檢查服務器的 ssl 證書。它是某個域注冊表的演示服務器。所以我需要服務器來檢查我的證書。
const certPEM = `-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
`
const certKey = `-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----`
cert, err := tls.X509KeyPair([]byte(certPEM), []byte(certKey))
if err != nil {
t.Error("server: loadkeys: %s", err)
}
cfg := tls.Config{
InsecureSkipVerify: true,
ServerName: "somehost.com",
Certificates: []tls.Certificate{cert},
}
conn, err := tls.Dial("tcp", "somehost.com:700", &cfg)
if err != nil {
t.Error("failed to connect: " + err.Error())
}
defer conn.Close()
所以這段代碼適用于我的情況。
- 2 回答
- 0 關注
- 184 瀏覽
添加回答
舉報