引文:由于目前公司一些互联网产品实施技术要求,需要掌握和了解一些关于网络的基础知识,本篇博文将简单介绍一下相关的内容。主要包含以下内容:HTTP 和 HTTPS 简介、SSL/TLS协议、SSL证书的申请和配置、域名解析及医院网络架构介绍及网络转发。
一、HTTP 和 HTTPS 简介
1.1 基础定义
HTTP
:超文本传输协议,即 HyperText Transfer Protocol。这是互联网上应用最为广泛发一种网络协议,是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。
HTTP解析
- HTTP是构建于TCP/IP协议之上,是应用层协议,默认端口号80
- HTTP协议是无连接无状态的
HTTP特性
优点是「简单、灵活和易于扩展、应用广泛和跨平台」。
- 简单:HTTP 基本的报文格式就是 header + body ,头部信息也是 key-value 简单文本的形式。
- 灵活和易于扩展:HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死, 都允许开发人员自定义和扩充。
- 应用广泛和跨平台:互联网发展至今,HTTP 的应用范围非常的广泛,从台式机的浏览器到手机上的各种 APP, 同时天然具有跨平台的优越性。
有一大缺点明文传输「不安全」。 HTTP虽然使用极为广泛, 但是却存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏。
- 关于 HTTP的明文数据传输, 攻击者最常用的攻击手法就是网络嗅探,简单的抓包工具, 就有可能获取到网站的用户的隐秘信息。
- 另外,HTTP在传输客户端请求和服务端响应时, 唯一的数据完整性检验就是在报文头部包含了本次传输数据的长度, 而对内容是否被篡改不作确认。因此攻击者可以轻易的发动中间攻击, 修改客户端和服务端传输的数据, 甚至在传输数据中插入恶意代码, 导致客户端被引导至恶意网站被植入木马。
HTTPS
: (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口(443)及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。
HTTPS相较于HTTP的改进:
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个:
-
数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 。
-
数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 。
-
身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。
优缺点:
优点当然是数据传输安全性和完整性:
- 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 ;
- HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性 。
也有相应缺点:
- 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗 。
- HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面基本无效。
- 成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。
1.2 原理区别
HTTPS 主要由两部分组成:HTTP + SSL / TLS
,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
HTTP 原理
① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容 。
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容 。
HTTPS 原理
① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器 ;
② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数 [2] ;
③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器 ;
④ 客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法) ;
⑤ 客户端将所有握手消息的 MAC 值发送给服务器 ;
⑥ 服务器将所有握手消息的 MAC 值发送给客户端 。
二、SSL/TLS协议
2.1 协议概念及工作流程
SSL/TLS
协议是一种安全通信协议,用于在计算机网络上保护数据传输的机密性、完整性和身份验证。SSL代表安全套接字层(Secure Socket Layer),TLS代表传输层安全性(Transport Layer Security),它是SSL的继任者。
SSL/TLS协议的工作流程大致如下:
- 客户端发送一个SSL/TLS连接请求到服务器。
- 服务器发送一个数字证书给客户端。数字证书包含服务器的公钥和其他信息。
- 客户端验证数字证书,以确保证书来自可信的证书颁发机构,没有被篡改。
- 客户端生成一个随机密钥并使用服务器的公钥加密,发送给服务器。
- 服务器使用自己的私钥解密客户端发送的随机密钥,并用它加密数据。
- 客户端使用自己的私钥解密服务器发送的数据。
SSL/TLS协议提供以下安全功能:
- 机密性:SSL/TLS协议使用对称密钥加密算法(如AES)加密数据,以保护数据传输的机密性。
- 完整性:SSL/TLS协议使用散列算法(如SHA)计算消息摘要,以验证数据在传输过程中是否被篡改。
- 身份验证:数字证书可用于证明服务器的身份,以及验证客户端的身份(如果使用客户端证书)。
2.2 配置使用
要使用SSL/TLS协议保护网络通信,需要执行以下步骤:
- 获取数字证书:如果您是服务器管理员,您需要获取数字证书以验证服务器的身份。可以通过向证书颁发机构申请数字证书或使用自签名证书来获得数字证书。
- 安装数字证书:将数字证书安装到服务器上,以便客户端可以验证服务器的身份。
- 配置服务器:将服务器配置为使用SSL/TLS协议。这包括选择要使用的SSL/TLS版本和加密套件,设置证书链和私钥等。
在Web服务器上,您可以使用诸如Apache、Nginx、IIS等Web服务器软件来启用SSL/TLS协议。 在客户端上,您可以使用支持SSL/TLS协议的Web浏览器来访问使用SSL/TLS保护的网站,以建立安全连接。
三、SSL证书
从前面我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码。在握手过程中,网站会向浏览器发送SSL证书,它是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。
3.1 证书的类型
实际上,我们使用的证书分很多种类型,SSL
证书只是其中的一种。证书的格式是由X.509标准定义。SSL证书负责传输公钥,是一种PKI(Public Key Infrastructure,公钥基础结构)证书。我们常见的证书根据用途不同大致有以下几种:
- 1、SSL证书,用于加密HTTP协议,也就是HTTPS。
- 2、代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等。
- 3、客户端证书,用于加密邮件。
- 4、双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。
这些证书都是由受认证的证书颁发机构——我们称之为CA(Certificate Authority)机构来颁发,针对企业与个人的不同,可申请的证书的类型也不同,价格也不同。CA机构颁发的证书都是受信任的证书,对于SSL证书来说,如果访问的网站与证书绑定的网站一致就可以通过浏览器的验证而不会提示错误。
3.2 SSL证书申请
SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。CA机构颁发的证书有多种加密方式和种类,价格一般也比较昂贵。
域名解析商后台也提供免费ssl证书申请,这类免费证书安全性当然没有付费证书高,而且都有有效时间限制。如在24年4月前免费证书都是1年有效期,后续调整为3个月。
3.3 SSL证书安装
参考阅读以下文章:
四、域名和域名解析
4.1 什么是域名
看一下百度百科的解释:
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。 由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
这就叫专业,解释非常清楚。这里需要再提一嘴关于域名级别,域名级别是网址分类的一个标准,包括顶级域名、二级域名等。简单点说域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,最右边的那个词称为顶级域名。 顶级域名,又称一级域名,常见的有".com"、".org"、".net"、".cn"等。“二级域名”就是在一级域名前再加一级,如"baidu.com"。“三级域名”就是在二级域名前再加一级,如"map.baidu.com"。
4.2 什么是DNS
再看一下专业的解释:
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
4.3 什么是域名解析
再来一段专业解释:
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。 域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
4.3 域名解析类型
A记录(Address Record)
:A记录用于将域名指向一个具体的IP地址。当你想要人们通过你的域名来访问你的网站时,你需要设置A记录。A记录是网站建设中最主要的一种类型。MX记录(Mail Exchange Record)
:当你有自己的域名,并希望使用它来收发电子邮件时,你需要设置MX记录来告诉互联网你的邮件服务器在哪里。CNAME记录(Canonical Name Record)
:CNAME用于给域名设置别名。例如,你可以有一个主域名”example.com”,并为它设置一个别名www.example.com。SPF记录(Sender Policy Framework)
:SPF记录用于防止电子邮件欺诈。它确定哪些邮件服务器被授权为你的域名发送电子邮件,从而避免垃圾邮件发送者冒充你发送电子邮件。TXT记录(Text Record)
:TXT记录主要用于存放文本信息。这可以是服务器相关的各种信息,如域名所有权验证、电子邮件相关的策略等。
4.4 域名解析设置
不同域名服务商的域名解析设置方法有所不同,例如阿里云和腾讯云的域名解析设置方法就有所不同,但万变不离其宗,在网站应用场景中,网站域名解析的本质就是将域名与对应服务器IP地址进行绑定关联。
下面是目前2家主流域名服务商阿里云、腾讯云域名解析设置截图:
设置相对比较简单,根据提示填写以下信息即可:主机记录\记录类型\线路类型\记录值\权重\优先级\TTL。
五、网络转发
5.1 医院网络架构简介
要说明医院网络层转发的模式,可以先阅读一下以下这篇文章,了解一下大部份医院现有的网络架构。
医院以往常采用内外网相互独立的模式。虽然保证了医院数据信息、患者隐私的安全,但却明显限制了区域化发展。在互联互通的今天,显然已经无法满足社会大众对医院的时代需求。随着近年来,网闸技术的愈发成熟,使这种两难问题得到了有效解决。
5.2 网络转发
我们狭义理解的网络转发(映射)本质是通过网络交换平台实现HTTP代理,即我们常说的通过医院【前置机】把内网应用转发到外网上。从‘前置机’描述它本质就是一个【网络转发器】,它可以是一台‘中间服务器’借助相关软件(如常用nginx)实现网络代理,也可以通过【网闸】、【防火墙】、【转发软件】等(如下图举例)实现内网穿透及端口映射(多数医院是此种方式)。