憨豆说安全 · 2022年07月07日

【憨豆话安全】从网络访问https说起

微信小程序平时都有用到,如果想开发网络服务的微信小程序,就需要服务器后台,微信小程序开发明确要求,“每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。”并且“域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost;”,“小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器的域名使用的HTTPS的证书进行校验。”啰嗦这么多,其实https最核心的就是基于域名的SSL证书认证。
图片6.jpeg
域名可以随便去申请,但是一旦要使用,根据工信部的要求,域名必须进行域名备案。不然不仅无法访问到你的网站,还可能涉及到法律问题,被罚款或其他措施。域名就是通俗所说的网址,服务器有自己的IP地址,对域名进行解析,绑定服务器的IP地址,就可以通过域名访问到服务器了。域名之所以要实名备案,不管是个人备案还是公司备案,都需要提供真实的信息,就是监管机构需要能找到责任主体。
域名已经实名备案的情况下,为什么还需要SSL证书认证呢?这个就涉及到HTTPS加密通信的机制。最开始的互联网主要信息服务,基于网页的服务是采用HTTP协议,HTTP(Hyper Text Transport Protocol)是能够获取HTML的通信协议,也是web上进行数据交换的基础。HTTP是典型的C-S (Client-Server)协议,也就是客户端发起请求,服务器提供响应。
图片7.png
基于明文HTTP显然不能满足安全通信的要求,相当于数据“裸奔”在网络上,很容易被黑客截获,尤其是涉及到交互式的互联网访问,账号密码等都相当于是公示了。除了被窃听以外,还有可能被冒充或数据篡改。
为了避免上述的监听,冒充,篡改的风险,需要对信息进行加密,如果直接采用同一秘钥的加密,秘钥的管理是个大麻烦,尤其是互联网上那么多的访问请求,不仅维护的成本很高,还很容易泄漏秘钥,被黑客获取的话,和明文裸奔也没有什么区别。
非对称加密方式是比较好的选择,比如基于RSA算法可以生成公钥和私钥,用公钥加密的数据,只有私钥可以解,反之,用私钥可以签名,用公钥来解码内容,可以用来做签名校验。经过公钥加密的数据,即使被截获,由于没有私钥,也不能解码获取信息内容。
但是非对称加密的算法比较复杂,编解码的效率都很低,因此可以把非对称加密和对称加密结合起来,通过非对称的方式传输一个随机的对称加密秘钥,握手以后通过对称加密算法来实现高效率的交互内容加密。
图片8.jpeg
但这样又带来一个新的问题,都是用同样的机制,黑客可以冒充做个假网站来进行交互,怎么验证服务器是合法有效的呢?SSL证书认证就显得尤为重要,HTTPS的证书必须是有效的,要符合下面的这些条件:

  • 证书必须被系统信任,根证书已被系统内置
  • 部署 SSL 证书的网站域名必须与证书颁发的域名一致
  • 证书必须在有效期内
  • 证书的信任链必须完整(需要服务器配置)

不同的系统对证书的要求也不尽相同,比如IOS不支持自签名证书,必须满足苹果ATS (Apple Transport Security)的要求。TLS必须支持1.2及以上版本(目前主流的1.3版本),后续可以对SSL和TLS进行更多解释。
有效的SSL数字证书包括一个公共秘钥和一个私用秘钥,公共秘钥用于加密信息,私用秘钥用于解密加密的密文信息。有效的SSL数字证书可以确认网站的真实性,以及保证信息传输的机密性。在建立会话的过程中,服务器会传送他的证书,用户端会自动分析服务器证书,并根据不同的浏览器或应用程序,产生会话秘钥,用于通信的信息进行加密。这个过程是自动的,对用户使用透明。

推荐阅读
关注数
4286
文章数
27
科普安全知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息