GoLang:你真的了解 HTTPS 吗?
六、HTTPS 实战问题记录 1. 问题:HTTPS 是否需要做域名劫持? 没必要。 原因如下:https 在证书校验这步,客户端除了通过对比数字签名来校验证书的有效性,还会比较证书上的域名是否与自己要访问的域名一致。因此,只要服务器的证书是可信的且客户端不跳过“证书验证”这个步骤,https 能够防止域名劫持。 笔者在实际中做过防止域名劫持的工作,具体做法是:首先,客户端向可信赖的域名服务器请求域名对应的 IP 地址;接着,客户端用 IP 替换域名进行网络请求。被称为HTTPS 的 IP 直连。但在实际中会遇到了一个问题:域名身份不对。根本解决方案是:1).书校验时,选择自己定义的 hostname 进行校验;2).证书校验前,把 URL 的 IP 替换回域名。在很多语言实现中,解决方案更为简单:在请求头部的增加 host-name 字段,值填入域名即可。 2. 问题:"x509: certificate signed by unknown authority" 这个问题是客户端拿到了服务器的证书要进行身份验证,但是通过证书信任链策略发现中间断了,搜索不到根证书。说白了就是客户端本地没有签发这个用户证书的根证书或中介证书。 实际中的解决办法有:1). 缺啥装啥,没有根证书/中介证书,那就安装上;2).跳过证书身份验证这步。GoLang 中跳过身份验证的实现: client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } } 3. 问题:https 项目中,服务端怎么管理证书和 RSA 密钥? 看情况。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |