Https的介绍
一、前言
众所周知HTTPS为什么比HTTP安全,为什么呢?出于好奇想了解下安全的结论从何而出。网络上很多资料,但是看完之后还是想自己写一篇,目的是在于看完这些资料后能够梳理一下,其次可以分享给有需要的人。
二、HTTP与HTTPS简单介绍(专业解释,特地百度一下,图是自己画的啦~将就看,不想看可以直接看原理分析)
HTTP协议全称为:Hyper Text Transfer Protocol ,翻译过来就是超文本传输协议。
Web服务器根据接收到的请求后,向客户端发送响应信息,传输过程明文,如果是输入密码之类的请求被其他人获取,那就极其危险。
HTTPS协议全程为:超文本传输安全协议(Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。
三、HTTPS的工作原理分析
前提:服务器保存公钥和私钥,公钥可以发送给所有客户端,私钥只有服务器自己才有。
【1】客户端访问网址,请求服务器。
【2】服务器返回公钥。这里先不介绍验证身份(证书相关)。
【4】客户端收到公钥后,客户端会自己生成一个随机数,经过公钥加密后得到一串随机码。
【5】把这串随机码发送给服务器
【6】服务器得到随机码后利用私钥进行解密,得到客户端发送过来的随机数
----至此,客户端和服务器都知道随机数,就知道加密规则了,双方开始传输内容进行加密。
【7】服务器保存随机数,服务器用随机数进行加密内容给客户端
【8】客户端收到服务器数据可以使用随机数解密
【9】【10】反之。客户端给服务器的内容加密,服务器得到内容后进行解密
以上流程没有加身份验证,那是哪个环节会让黑客有机可乘?
黑客攻击示意图:
前期知识:公钥加密,私钥必定可以解密,公钥相当于锁,私钥就是钥匙。一把锁只有一把钥匙能打开。
【1】同上。客户端访问网址,请求服务器。
【2】服务器发送公钥给客户端,但是被黑客截获,黑客获取到了服务器的公钥K1
【3】伪造了一个公钥K2,把自己的公钥K2发给了客户端
【4】客户端得到的是伪造的K2
【5】客户端会自己生成一个随机数,利用公钥K2加密后得到一串随机码,准备发送给服务器
【6】客户端发送的随机码被黑客截获,由于客户端发送的随机码是用公钥K2加密的,黑客可以用私钥M2解密,得到随机数
【7】黑客得到随机数后,利用直接截获的公钥K1进行加密,发送给服务器
【8】服务器收到后用私钥M1,也知道了随机数
----到此为止,客户端、黑客、服务器都知道随机数,随机数用来干嘛?随机数用来客户端和服务器之后通信加密数据使用,既然黑客知道随机数,就知道你们加密的规则,自然可以解密得到传输内容。
----以上内容有点绕要多看几遍,最好在看的文字的时候自己画图,就能理解了。
保留内容没有讲,嘻嘻,就是身份验证(证书)。如果客户端能够知道服务器的身份是真的,那就不会相信黑客给的公钥K2了。
如果加了身份验证会是怎么样呢?
【1】同上
【2】服务器发送的公钥K1被截获
【3】黑客发送自己的公钥K2发送给客户端
【4】客户端对公钥进行校验,查看是否是服务器发送过来的,如果不是客户端会有不安全提醒,就是我们页面经常看到的
如果是安全
四、SSL证书
SSL证书就是上面说的身份验证,代表服务器发送过来的公钥是服务器本人发送的。SSL证书包括:客户端访问网址的域名,证书有效期,证书的颁发机构以及用于加密传输公钥等信息。因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。所以以上第二步传的公钥其实不仅仅是公钥,实际是证书,证书已经包含公钥。
SSL证书怎么申请?证书有免费的和付费,我们YMP和P系列的FQDN证书将会是免费的。
查看证书如下:
证书具体信息:
申请SSL证书时需要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。网站的域名非常重要,申请人必须证明自己对域名有所有权,不是所有的域名证书都可以随便申请,如果可以的话黑客们就不用做假证书欺骗了。一个证书一般只绑定一个域名或是泛域名(XXXX.A123cloud.com后缀固定,前面可以自己自定义,这样就可以有很多子域名)。
证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书
根证书是最关键的一个证书,如果根证书不受信任,它下面颁发的所有证书都不受信任。操作系统在安装过程中会默认安装一些受信任的CA机构的根证书,可以在"运行"里面运行"certmgr.msc"启动证书管理器可以在"运行"里面运行"certmgr.msc"启动证书管理器:
SSL证书验证失败有以下三点原因:
1、SSL证书不是由受信任的CA机构颁发的
2、证书过期
3、访问的网站域名与证书绑定的域名不一致
提示:如果操作系统没有存在该机构根证书,那他颁发的SSL证书都不会被信任。
最后我们总结一下使用SSL证书要注意的问题:
1、除非必要,不要随意安装根证书。安装根证书的时候一定要明确证书的来源。
2、对于网银,在线支付,重要邮箱等网站,一定要确保SSL证书是没有问题的,如果浏览器给出SSL证书错误的警告,一定要拒绝访问。一些小区宽带用户一定要注意这点,知道支付密码后就完了。
3、由于现在个人申请SSL证书比较便宜,一定要注意挂着合法SSL证书的钓鱼网站(国外比较常见)。对于钓鱼网站,一定要看清域名,另外别相信什么中奖的消息,同时要安装带有钓鱼防护功能的安全软件。
参考资料:
HTTP 与 HTTPS 的区别:https://www.runoob.com/w3cnote/http-vs-https.html
秒懂HTTPS接口(原理篇):https://blog.csdn.net/zuozewei/article/details/84727065
在线作图软件:processOn:https://www.processon.com
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作