SSL安全套接层(Secure Socket Layer) 为Netspace所研发,用以保证在Internet上数据传输的完整性和保密性,目前版本为3.0,最新版本为TLS1.2安全传输层协议(Transport Layer Security)。TLS和SSL两者差别极小可以将其理解为SSL的更新版本。
SSL介于应用层和网络层之间,位于传输层 。应用的数据经过传输层中的SSL进行加密,并增加自己的SSL头,在将加密后的数据传向网络层。
通过openssl可以自行签发证书,有了证书和私钥后就可以进行SSL安全通信了。
调用SSL提供的接口流程如下图所示:
从上述通讯过程可以看出,在ssl通讯建立起来之后,不考虑ssl版本上的一些漏洞,通信过程是很安全的,可以有效的防止中间人攻击和运营商劫持等问题,通讯数据的保密性和完整性得到了有效保证。所以针对SSL的相关攻击必须建立在其会话的初始化阶段,例如进行中间人攻击必须在会话建立过程中实现,即在通讯过程中攻击者伪造一个证书,对客户端声称该证书就是服务器证书来骗过客户端,使其信任该证书,并使用该证书来进行通讯,这样用户通讯的信息就会被第三监听,通讯保密性和完整性就被破坏。这种攻击方式也有一定的局限,当使用伪造的证书来建立通讯时,一般攻击者不会获得经过官方机构认证的证书,客户端的浏览器就会发过警告,提醒通信不安全,可以参考访问12306时的浏览器的提示(因为12306使用的是其自建的ca颁发的证书,没有经过官方机构的认证,所以浏览器就默认会认为其证书不安全,并提出告警)。
尽管通过浏览器去检验证书的合法性会提高攻击的成本,但在某些特殊情况下,还是会绕过浏览器的校验。例如:当我们使用fiddler和Charles这一类的抓包工具时,可以手动将他们的证书添加成为可信证书,所以当我们利用这些工具在本地对相关的系统进行逻辑分析时,并不会收到浏览器的告警。而且浏览器的校验仅仅针对的是web端的应用,对于移动端和其他非web端的应用只能通过其他方式来进行防护,一种比较通用的实现方式是使用SSL Pinning即证书绑定。
握手协议是客户端和服务器用于与SSL连接通信的第一个子协议。握手协议包括客户端和服务器之间的一系列消息。SSL中最复杂的协议是握手协议。该协议允许服务器和客户端相互进行身份验证,协商加密和MAC算法,以及保密SSL密钥以保护SSL记录中发送的数据。在应用程序的数据传输之前使用握手协议。
在客户端和服务器握手成功之后使用记录协议,即客户端和服务器相互认证并确定安全信息交换使用的算法,并输入SSL记录协议,该协议为SSL提供两种服务连接:
客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2第2个字节制定实际错误类型。
需要SSL证书。
小程序是基于H5网页技术开发,最大特点是在线使用、无需安装、用完即走。然而互联网常用的网络通信协议是HTTP明文协议,如果使用HTTP协议去完成小程序的数据交互,将会让用户的个人数据和隐私信息安全面临巨大威胁。HTTP明文协议也是不安全的传输协议,无法进行服务器端真实身份校验,也不能为传输数据提供加密保护,通过HTTP协议传输的数据时刻处在被窃听、篡改、冒充的风险中。
所以为了保护用户数据安全,微信小程序在上线之初就强制要求小程序服务端必须使用HTTPS加密协议(也就是需要安装SSL数字证书),通过HTTPS请求进行网络通信,若不满足条件的域名和协议无法请求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)