2 回答
TA贡献1876条经验 获得超7个赞
openssl s_client
只是一个连接的测试工具,但它并不关心证书是否对连接有效。Go 反而关心证书是否可以被验证,因此您会得到证书无效的信息,因为名称不匹配。
我做错了什么?
根据错误消息,您确实通过错误的主机名访问了主机。或者您的服务器配置不当,以至于它发送了错误的证书。
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 关注
- 148 浏览
添加回答
举报