企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
http和https是什么? * 首先,我们的url分为通信协议和域名 域名很好理解,不同的域名对应的就是不同的网页地址,所以今天我们一起解析一下通信协议 ![](https://img.kancloud.cn/8e/d4/8ed4c1feaa54020fcbd5cd91f0c99a8e_558x114.png) ### 1、 http ``` 我们先看http,HTTP协议是一种使用明文数据传输的网络协议。无 法验证报文的完整性,不知道是否中途被串改,一直以来都是都是 最主流的网络传输协议,但是因为我们的传输是明文传输,所以 如果我们在线上填入银行卡号和密码的时候,我们因该怎么办呢? 引入https,加密协议 ``` ![](https://img.kancloud.cn/61/32/613243cf68cd9dc0b9215556c4ab48c0_311x227.png) ### 2、 https ``` https是在http的基础上进行了加密处理,在进行数据传入前对数据进 行加密处理,接收方进行解密,所以传入的过程中是一串看不懂的鬼 东西, ``` ![](https://img.kancloud.cn/a0/0f/a00f069f07903df4b47dfe46cf5a3392_303x270.png) * http 这个是未加密的 如部分的小型网站 ![](https://img.kancloud.cn/77/57/7757606ac59b1046bbeeee93c9cd24fa_528x115.png) * https 这个是加密的,如京东 百度 看云等 ![](https://img.kancloud.cn/f4/0f/f40f8d7376966761f525d2a99345f790_354x143.png) `http+加密+认证+完整性保护=https` https并非应用层的一种新协议,只是http通信接口部分用ssl/tls协议代替而已。通常http直接和tcp通信,当使用ssl时则演变成先和ssl通信,再由ssl和tcp通信。 * 那什么是SSL/TLS呢 SSl是‘Secure Sockets Layer’的缩写 ,中文名叫做安全套接层(90年代中期,由网景公司设计) * 那为什么需要发明SSL呢 因为http是明文传输的,存在着很多的缺点,比如传输的过程中容易被偷窥(嗅探)和篡改,所以SSL就是解决这个问题的1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。 注意:两者其实就是同一种协议,只不过是在不同阶段的不同称呼。 SSL协议是基于TCP/ IP的应用层的,为数据传输提供安全· * SSL可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等 ### 对称加密和非对称加密 对称密钥加密,又称私钥加密, 即信息的发送方和接收方用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。 非对称密钥加密, 又称公钥加密,它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。 从功能角度而言非对称加密比对称加密功能强大,但加密和解密速度却比对称密钥加密慢得多。 非对称密钥通信过程 ![](https://img.kancloud.cn/84/df/84dfda63430f806a8cc38bee88f84388_627x292.png) * 什么是私钥和秘钥 * 使用私钥加密的内容,使用公钥解密,反之,使用公钥加密的内容,使用私钥解密 * 服务器生成公钥和私钥,私钥自己保存,公钥对外公开 * 客户端发送请求之前,使用公钥进行加密——由于私钥是服务器私有,即使被截获也无法解密 * 反过来,服务器发送响应之前: * 对消息执行hash算法,生成摘要 * 对摘要使用私钥加密,生成数字签名 * 将消息和数字信息一起发送到客户端 * 客户端用公钥解密数字签名,得到摘要 * 客户端对消息执行hash算法,与摘要比对,验证消息的真伪 * 如果消息被截获,摘要被解密,由于没有私钥,也就无法生成能用公钥解密的摘要,这样就保证了消息的正确性、完整性,以及服务器的真实性。 * 该过程的漏洞在于:如何防止有人篡改公钥,也就是如何保证公钥的真实性 * 解决:通过CA(数字证书认证),将服务器公钥、用到的hash算法、CA机构信息等,通过CA的私钥加密成数字证书 * 之后服务器发送的消息,都附上数字证书 * 浏览器收到数字证书,用CA的公钥解密,拿到服务器的公钥 * 再将机构信息与本机机构列表比对,验证公钥的真实性 * 如果有人伪造公钥,甚至获得了CA的私钥,其证书中的信息、hash算法等内容也很难与真实网站完全一致。 ### SSL的工作原理 SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密,但是这里有两个问题: (1)、如何保证公钥不被篡改? 解决方法:将公钥放在数字证书中,只要证书是可信的,公钥就是可信的。 (2)、公钥加密计算量太大,如何减少耗用的时间? 解决方法:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。 因此,SSL/TLS协议的基本过程是这样的: 1. 客户端向服务器端索要并验证公钥。 2. 双方协商生成“对话密钥”。 3. 双方采用“对话密钥”进行加密通信。 爱丽丝和鲍勃实例 ![](https://img.kancloud.cn/63/59/63596cc61cc4887d481edfc79753073f_760x773.png) 第一步,爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法,具体的加密方法可参考[SSL证书背后的加密算法](https://www.cnblogs.com/cioliuguilan/p/5518798.html)。 第二步,鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。 第三步,爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。 第四步,鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。 第五步,爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程 ### 如何获取SSL证书 网站要实现HTTPS访问,首选你需要申请一张[SSL证书](https://www.baidu.com/s?wd=SSL%E8%AF%81%E4%B9%A6&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao),然后将[SSL证书](https://www.baidu.com/s?wd=SSL%E8%AF%81%E4%B9%A6&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)部署到[服务器端](https://www.baidu.com/s?wd=%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao),开启[443端口](https://www.baidu.com/s?wd=443%E7%AB%AF%E5%8F%A3&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao),就可以实现HTTPS访问了。另外,如何获得[SSL证书](https://www.baidu.com/s?wd=SSL%E8%AF%81%E4%B9%A6&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)呢?可以到[CA机构](https://www.baidu.com/s?wd=CA%E6%9C%BA%E6%9E%84&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)申请付费和免费的SSL证书,目前一些机构推出了免费SSL证书,如[沃通CA](https://www.baidu.com/s?wd=%E6%B2%83%E9%80%9ACA&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao)推出了3年期多域名免费SSL,可以进行免费申请。如何部署SSL证书了,在申请的时候,有相应的部署指导手册。 ![](https://img.kancloud.cn/96/62/9662879822cf1a29bc24bfe28a9a99db_441x368.png) 过程:填写申请资料--生成CSR--域名验证--审核通过 ## Https协议验证过程 很多人说ca证书很贵,那有没有办法可以不用付费的证书呢?答案是有的,我们可以自己和自己颁布一个证书吗,但是在浏览器上还是会提示不安全,因为浏览器的 * 关于自颁布证书的缺点 1\. 自签证书最容易被假冒和伪造,而被欺诈网站所利用。 2\. 自签证书最容易受到SSL中间人攻击。 3\. 自签证书支持不安全的SSL通信重新协商机制。 4\. 自签证书支持非常不安全的SSL V2.0协议。 5\. 自签证书没有可访问的吊销列表。 6\. 自签证书使用不安全的1024位非对称密钥对。 7\. 自签证书证书有效期太长。 公网SSL信任证书是由合法的签发机构颁发的,他具有一定的合法性与手续办理,相当于您的身份证在中国被认可一样,而您自己办理的身份证只能自己用,自己相信自己。合法的SSL证书可以淘宝Gworg获取