㈠ 对于前端来说http与https请求有区别么
对于前端用户来说,访问http网站可能会收到“网站不安全”、“连接不私密”等等安全警告,影响正常访问,如果是电商网站还会影响购买行为。而https网站因为安装了SSL证书,比较安全,受浏览器信任,不会弹出安全警告,能建立用户信任等。建议去数安时代申请SSL证书,兼容性比较好。
㈡ Https协议
简单地来说,是基于ssl的http协议,依托ssl协议,https协议能够确保整个通信是加密的,密钥随机产生,并且能够通过数字证书验证通信双方的身份,以此来保障信息安全。其中证书包含了证书所代表一端的公钥,以及一些其所具有的基本信息,如机构名称,证书所作用域名、证书的数字签名等,通过数字签名能够验证证书的真实性。通信的内容使用对称加密方式进行加密,通信两端约定好通信密码后,通过公钥对密码进行加密传输,只有该公钥对应的私钥,也就是通信的另一端才能够解密获得通信密码,这样既保证了通信的安全,也使加密性能和时间成本可控。
https协议在http协议和tcp协议增加一层安全层,所有请求和响应的数据在结果网络传输之前都会先进行加密,然后在进行传输。
Https协议既支持单向认证,也支持双向认证。
单向认证:只校验服务端证书的有效性。
双向认证:既校验服务端也校验客户端。
SSL的全称是Secure Socket Layer,既安全套接层。SSL协议独立于应用层,高层应用http,ftp,ssh都可以简历在ssl之上。
TLS全程是Transport Layer Security,传输层安全协议,是基于SSL的通用化协议,同样位于应用层和传输层之间,正逐步接替SSL成为下一代网络安全协议。
SSL/TLS分为两层:
1.Record Protocol,记录协议;
记录协议建立在可靠的传输协议(TCP)之上,提供数据封装,加密解密,数据压缩,数据校验等基本功能。
2,Handshake Protocol,握手协议。
建立在握手协议之上,在实际的数据传输开始前,进行加密算法的协商,通信密钥的交换,通信双方身份的认证。
(1)客户端发送一个client hello消息,消息包含协议的版本信息、sessionid、客户端支持的加密算法、压缩算法等信息,并且还包含客户端产生的随机数。
(2)服务端响应一个server hello消息,消息包含服务端产生的随机数、协议版本信息、sessionid、压缩算法信息,还有服务端数字证书,如果服务端配置是双向验证,则服务端将请求客户端证书。
(3)客户端通过证书来验证服务端证书的有效性。
(4)如果证书验证通过,客户端将向服务端发送经过服务端公钥加密的预主密钥,即PreMaster Secret。假如服务端在上一个步骤请求了客户端证书,客户端会将客户端证书发送给服务端进行校验。
(5)服务端验证客户端证书的有效性,并用自己的私钥对PMS进行解密,使用client hello和server hello两个步骤所生成的随机数,加上解密的PMS来生成主密钥,即Master Secret,然后通过MS生成加密密钥。
(6)客户端也将使用client hello和server hello两个步骤所生成的随机数,加上解密的PMS来生成MS,,然后通过MS生成加密密钥。
(7)通知服务端未来信息将使用加密密钥来加密。
(8)给服务端发送加密密钥来加密信息,终止握手。
(9)通知客户端未来信息将使用加密密钥来加密。
(10)给客户端发送加密密钥来加密信息,终止握手。
完成握手后,客户端与服务端便可以开始加密数据通信:
㈢ 前端网络高级篇(一)HTTPS
HTTP是Web中常见的通信方式,无状态,简单易用。当然,它的不足之处也非常明显:
为了解决HTTP协议的痛点,采用通信加密的方式,继而出现HTTPS协议。
HTTPS其实是有两部分组成: HTTP + SSL / TLS ,也就是在HTTP上又加了一层处理加密信息的模块。
服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
加密技术有两种:
https采用共享密钥加密和公开密钥加密两者并用的混合加密机制 ,具体加密方式参考第二节。
SSL不仅提供加密处理,而且使用证书,来确定对方的非伪装的。
证书是由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。
HTTP+加密+认证+完整性保护=HTTPS 。上节提到,“https采用共享密钥加密和公开密钥加密两者并用的混合加密机制”,解释一下,就是用公开密钥加密 传递密钥 ,用共享密钥加密算法 加密报文内容 。
为什么HTTPS要采用混合加密呢?
因为公开密钥加密的处理速度要远远慢于共享密钥加密,所以,在通信最频繁的环节 - “报文加密”,采用了共享密钥。那么,更加安全的公开密钥加密,就非常适合“报文密钥”的传递来。
具体加密,解密,验证步骤如下:
㈣ https 协议是什么和http有什么区别
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。
HTTPS 和 HTTP 的区别主要为以下四点:
1、https 协议需要到 ca 申请证书,目前市面上的免费证书也不少,收费的也都比较贵。
2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
㈤ 前端面试01:说一下 http 和 https
https 的 SSL 加密是在传输层实现的。
(1)http 和 https 的基本概念
https 协议的主要作用是: 建立一个信息安全通道,来确保数组的传输,确保网站的真实性。
(2)http 和 https 的区别?
http 传输的数据都是未加密的,也就是明文的,网景公司设置了 SSL 协议来对 http 协议传输的数据进行加密处理,简单来说 https 协议是由 http 和 ssl 协议构建的可进行加密传输和身份认证的网络协议,比 http 协议的安全性更高。
主要的区别如下:
(3)https 协议的工作原理
(4)https 协议的优点
谷歌曾在 2014 年 8 月份调整搜索引擎算法,并称“比起同等 HTTP 网站,采用 HTTPS 加密的网站在搜索结果中的排名将会更高”。
(5)https 协议的缺点
㈥ Web:前后端http/https跨协议问题
搭建内部中台时遇到了一个很尴尬的问题:
搭建前端 使用的vue,然后产出静态文件,用nginx代理到http的地址;
搭建后端 使用的flask-restful,直接python运行,运行在http的地址;(另外吐槽下,flask-restful真心好用,但是目前资料真的太少,flask的资料多,但是作为初学者,还看不懂TAT)
内部地址 找运维大大申请了,最终运行在https的地址;
问题出现了: 前端使用http地址直接访问时没有问题,但是使用https访问时,请求后端是用ajax请求的http地址,报错
查网上的方案主要是,将后端改造,也支持https/后端通过nginx代理成http。作为新手已经看懵了,因为还得自己配置下https证书。这些解决方案我贴到下面
但是问运维大大,找到了另外一个方案:把后端也用nginx反向代理到同一个接口,ajax请求就可以用https的啦。运维大大牛逼!
这里贴一下nginx的代理配置,希望可以帮助到其他同学~
感慨下,欠的债终究要补啊。不懂的东西太多,没系统学习过注定在日后踩坑TAT
1.Nginx直接反向代理后端: https://blog.csdn.net/qq_37105358/article/details/80854559
2.Flask直接走https:
https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https
3.阮一峰的SSL/TSL协议概述:
https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html