加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

GoLang:你真的了解 HTTPS 吗?

发布时间:2020-03-04 18:15:24 所属栏目:站长百科 来源:站长网
导读:副标题#e# 一直以来,在实验室甚至整个公司特别强调安全和隐私,近半年,笔者在用 GoLang 开发智能边缘计算设备的网络通信项目时,常被要求务必重视通信的安全和隐私。期间,对接了多个合作方,有的要求公网下要防止域名劫持,有的要求客户端上报要带证书啊

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 密钥?

看情况。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读