加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.52wenzhou.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 酷站推荐 > 酷站 > 正文

GoLang:你真的了解 HTTPS 吗?

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

一直以来,在实验室甚至整个公司特别强调“安全和隐私”,近半年,笔者在用 GoLang 开发智能边缘计算设备的网络通信项目时,常被要求务必重视“通信的安全和隐私”。期间,对接了多个合作方,有的要求“公网下要防止域名劫持”,有的要求“客户端上报要带‘证书’啊,更安全”,还有要求除了要用 HTTPS,还要在业务逻辑上再进行二次哈希、摘要、加密等等。由于笔者对 HTTPS 的认知也仅停留在 “HTTPS 比 HTTP 更安全”的层面上,在项目开发中遇到很多通信相关的问题经常束手无策,因此沉下心来,认认真真学习了 HTTPS 并记录成此文。

一、HTTPS 之灵魂三问

要说 HTTPS,搞 IT 的甚至是不搞 IT 的,都知道:“HTTPS 比 HTTP 安全”。因此但凡要开发涉及网络传输的项目时,得到的需求一定有:“要用 HTTPS”。

GoLang:你真的了解 HTTPS 吗?

1. HTTPS 是什么?

维基百科对 HTTPS 的解释是:

超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为 HTTP over TLS、HTTP over SSL 或 HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在 1994 年首次提出,随后扩展到互联网上。  

抓重点:HTTPS=HTTP over SSL/TLS,也就是说,HTTPS 在传输层 TCP 和应用层 HTTP 之间,多走了一层 SSL/TLS。

GoLang:你真的了解 HTTPS 吗?

由此可见,TLS/SSL 是 HTTPS 的核心! 那么,这个TLS/SSL又是何方神圣呢?文章How to use SSL/TLS to Secure Your Communications: The Basics指出:

The SSL/TLS protocol functions between two layers of the OSI Presentation layer.The handshake and record layers operate over TCP/IP to encrypt data received directly from the Application layer.

SSL/TLS 协议作用在传输层和应用层之间,对应用层数据进行加密传输。

 

GoLang:你真的了解 HTTPS 吗?

借用文中的图,可以直观感受到:SSL和TLS都是加密协议。SSL,全称 Secure Socket Layer,在 1994 年由网景公司(Netscape)最早提出 1.0 版本;TLS,全称 Transport Layer Security,则是 1999 年基于 SSL3.0 版本上改进而来的。官方建议弃用 SSL 而保留和采用 TLS,但是由于历史原因,SSL 仍然存在,而且很多人已经习惯 SSL 这个名词,因此现在索性就叫成 SSL/TLS。

2. HTTPS 为什么?

肯定有不少同学不假思索:“当然是 HTTP 不安全,HTTPS 安全,所以选择 HTTPS 呗!”那么,HTTPS 比 HTTP“好”在哪里?

维基百科上对 HTTP 的解释如下:

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。

HTTP 的发展是由蒂姆·伯纳斯-李于 1989 年在欧洲核子研究组织(CERN)所发起。HTTP 的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的 RFC,其中最著名的是 1999 年 6 月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本——HTTP 1.1。

 

HTTP 协议是为了传输网页超文本(文本、图像、多媒体资源),以及规范客户端和服务器端之间互相请求资源的方法的应用层协议。在 1989 年最早推出了 HTTP 0.9 版本,而 1999 年公布的 HTTP 1.1 是到目前(2020 年)仍旧广泛使用的版本。

但是这个 HTTP 1.1 版本存在一个很大的问题-明文传输(Plaintext/Clear Text),这个问题在互联网时代的今天是致命的,一旦数据在公共网络中被第三方截获,其通信内容轻而易举地就被窃取了。

因此,HTTPS 应运而生,它被公认的三大优势有:

数据加密,防窃听

身份验证,防冒充

完整性校验,防篡改

啰嗦说一句:第 1 点确实是解决了 HTTP 明文传输;至于第 2 和第 3 点,其他一些应用层协议也会遇到(服务端被冒充、数据被篡改是网络传输中“较常见”的问题)。

再插一句题外话:2015 年推出的 HTTP 2 在 HTTP 1.1 的基础上有很大改进,其中一点就是 HTTPS。

3. HTTPS 怎么做?

本文接下来将从 HTTPS 的 3 个优势展开说明,即:

数据加密,即 HTTPS 是怎么进行数据加密的。本章介绍 HTTPS 中的对称加密和非对称加密

身份验证,即 HTTPS 是怎么让客户端相信“发给我数据的服务端是我想要的服务器”。本章介绍 HTTPS 的 CA 和证书

完整性校验,即 HTTPS 是怎么做数据完整性校验以防止被篡改。本章介绍 HTTPS 的哈希

最后,为了整篇文章的完整性,还会增加以下几个内容:

HTTPS 流程,即客户端和服务器端 HTTPS 通信全过程

实际问题,记录了笔者在实战中遇到 HTTPS 相关问题

二、数据加密:HTTPS 的对称加密和非对称加密

相信不少同学会说"对称加密和非对称加密有什么好讲的?前者只有一把密钥做加解密;后者有两把密钥,公钥和私钥,互为加解密,公钥给对方,私钥自己用。HTTPS 两者都有。好了,这章可以结束啦。"

三个问题:

HTTPS 为什么同时要有对称加密和非堆成加密两种加密方式?

HTTPS 对称加密的密钥(本文称为 SK,下同)如何产生和传输?

HTTPS 的有几套非对称加密?目的是什么?是否可以省略?

好,一个问题一个问题来。

问题 1:HTTPS 为什么同时要有对称加密和非对称加密两种加密方式?

(编辑:温州站长网)

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

推荐文章
    热点阅读