企业门户网站登录,知名网站排名,南京网站建设工作室,提供赣州网站建设首先解释一下什么是HTPPS
简单来说#xff0c; https 是 http ssl#xff0c;对 http 通信内容进行加密#xff0c;是HTTP的安全版#xff0c;是使用TLS/SSL加密的HTTP协议
Https的作用#xff1a;
内容加密 建立一个信息安全通道#xff0c;来保证数据传输的安全 https 是 http ssl对 http 通信内容进行加密是HTTP的安全版是使用TLS/SSL加密的HTTP协议
Https的作用
内容加密 建立一个信息安全通道来保证数据传输的安全身份认证 确认网站的真实性数据完整性 防止内容被第三方冒充或者篡改
其次什么事SSL证书
SSL 由 Netscape 公司于1994年创建它旨在通过Web创建安全的Internet通信。它是一种标准协议用于加密浏览器和服务器之间的通信。它允许通过Internet安全轻松地传输账号密码、银行卡、手机号等私密信息。
SSL证书就是遵守SSL协议由受信任的CA机构颁发的数字证书。
SSL/TLS的工作原理:
需要理解SSL/TLS的工作原理我们需要掌握加密算法。加密算法有两种对称加密和非对称加密
对称加密通信双方使用相同的密钥进行加密。特点是加密速度快但是缺点是需要保护好密钥如果密钥泄露的话那么加密就会被别人破解。常见的对称加密有AESDES算法。
非对称加密它需要生成两个密钥公钥(Public Key)和私钥(Private Key)。
公钥顾名思义是公开的任何人都可以获得而私钥是私人保管的。相信大多程序员已经对这种算法很熟悉了我们提交代码到github的时候就可以使用SSH key在本地生成私钥和公钥私钥放在本地.ssh目录中公钥放在github网站上这样每次提交代码不用麻烦的输入用户名和密码了github会根据网站上存储的公钥来识别我们的身份。
公钥负责加密私钥负责解密或者私钥负责加密公钥负责解密。这种加密算法安全性更高但是计算量相比对称加密大很多加密和解密都很慢。常见的非对称算法有RSA。
细说一下HTPPS链接过程
https 的连接过程大概分为两个阶段证书验证阶段和数据传输阶段
证书验证阶段
大概分为三个步骤
浏览器发起请求服务器接收到请求之后会返回证书包括公钥浏览器接收到证书之后会检验证书是否合法不合法的话会弹出告警提示怎样验证合法下文会详细解析这里先忽略
数据传输阶段
证书验证合法之后
浏览器会生成一个随机数使用公钥进行加密发送给服务端服务器收到浏览器发来的值使用私钥进行解密解析成功之后使用对称加密算法进行加密传输给客户端
之后双方通信就使用第一步生成的随机数进行加密通信。
https 的加密方式是怎样的对称加密和非对称加密为什么要这样设计
从上面我们可以知道https 加密是采用对称加密和非对称机密一起结合的。
在证书验证阶段使用非对称加密。 在数据传输阶段使用对称机密。
这样设计有一个好处能最大程度得兼顾安全效率。
在证书验证阶段使用非对称加密需要公钥和私钥假如浏览器的公钥泄漏了我们还是能够确保随机数的安全因为加密的数据只有用私钥才能解密。这样能最大程度确保随机数的安全。
在内容传输阶段使用对称机密可以大大提高加解密的效率。
内容传输为什么要使用对称机密
对称加密效率比较高一对公私钥只能实现单向的加解密。只有服务端保存了私钥。如果使用非对称机密相当于客户端必须有自己的私钥这样设计的话每个客户端都有自己的私钥这很明显是不合理的因为私钥是需要申请的。
HTTPS 可以做到百分之一百的安全嘛?
不是百分之白的可以通过中间人攻击。
什么是中间人攻击
中间人攻击是指攻击者与通讯的两端分别创建独立的联系并交换其所收到的数据使通讯的两端认为他们正在通过一个私密的连接与对方直接对话但事实上整个会话都被攻击者完全控制。
HTTPS 使用了 SSL 加密协议是一种非常安全的机制目前并没有方法直接对这个协议进行攻击一般都是在建立 SSL 连接时拦截客户端的请求利用中间人获取到 CA证书、非对称加密的公钥、对称加密的密钥有了这些条件就可以对请求和响应进行拦截和篡改。
过程原理
本地请求被劫持如DNS劫持等所有请求均发送到中间人的服务器中间人服务器返回中间人自己的证书客户端创建随机数通过中间人证书的公钥对随机数加密后传送给中间人然后凭随机数构造对称加密对传输内容进行加密传输中间人因为拥有客户端的随机数可以通过对称加密算法进行内容解密中间人以客户端的请求内容再向正规网站发起请求因为中间人与服务器的通信过程是合法的正规网站通过建立的安全通道返回加密后的数据中间人凭借与正规网站建立的对称加密算法对内容进行解密中间人通过与客户端建立的对称加密算法对正规内容返回的数据进行加密传输客户端通过与中间人建立的对称加密算法对返回结果数据进行解密
由于缺少对证书的验证所以客户端虽然发起的是 HTTPS 请求但客户端完全不知道自己的网络已被拦截传输内容被中间人全部窃取。
HTTPS 该如何防止中间人攻击
在https中需要证书证书的作用是为了防止中间人攻击的。如果有个中间人M拦截客户端请求,然后M向客户端提供自己的公钥M再向服务端请求公钥,作为中介者 这样客户端和服务端都不知道,信息已经被拦截获取了。这时候就需要证明服务端的公钥是正确的.
怎么证明呢?
就需要权威第三方机构来公正了.这个第三方机构就是CA. 也就是说CA是专门对公钥进行认证进行担保的也就是专门给公钥做担保的担保公司。
浏览器是如何确保CA证书的合法性
一、证书包含什么信息
颁发机构信息、公钥、公司信息、域名、有效期、指纹……
二、证书的合法性依据是什么
首先权威机构是要有认证的不是随便一个机构都有资格颁发证书不然也不叫做权威机构。另外证书的可信性基于信任制权威机构需要对其颁发的证书进行信用背书只要是权威机构生成的证书我们就认为是合法的。所以权威机构会对申请者的信息进行审核不同等级的权威机构对审核的要求也不一样于是证书也分为免费的、便宜的和贵的。
三、浏览器如何验证证书的合法性
浏览器发起HTTPS请求时服务器会返回网站的SSL证书浏览器需要对证书做以下验证
验证域名、有效期等信息是否正确。证书上都有包含这些信息比较容易完成验证判断证书来源是否合法。每份签发证书都可以根据验证链查找到对应的根证书操作系统、浏览器会在本地存储权威机构的根证书利用本地根证书可以对对应机构签发证书完成来源验证判断证书是否被篡改。需要与CA服务器进行校验判断证书是否已吊销。通过CRLCertificate Revocation List 证书注销列表和 OCSPOnline Certificate Status Protocol 在线证书状态协议实现其中 OCSP 可用于第3步中以减少与CA服务器的交互提高验证效率。
以上任意一步都满足的情况下浏览器才认为证书是合法的。
https 可以抓包吗
HTTPS 的数据是加密的常规下抓包工具代理请求后抓到的包内容是加密状态无法直接查看。
但是我们可以通过抓包工具来抓包。它的原理其实是模拟一个中间人。
通常 HTTPS 抓包工具的使用方法是会生成一个证书用户需要手动把证书安装到客户端中然后终端发起的所有请求通过该证书完成与抓包工具的交互然后抓包工具再转发请求到服务器最后把服务器返回的结果在控制台输出后再返回给终端从而完成整个请求的闭环。 有人可能会问了既然 HTTPS 不能防抓包那 HTTPS 有什么意义
HTTPS 可以防止用户在不知情的情况下通信链路被监听对于主动授信的抓包操作是不提供防护的因为这个场景用户是已经对风险知情。要防止被抓包需要采用应用级的安全防护例如采用私有的对称加密同时做好移动端的防反编译加固防止本地算法被破解。 如何防止抓包
对于HTTPS API接口如何防止抓包呢既然问题出在证书信任问题上那么解决方法就是在我们的APP中预置证书。在TLS/SSL握手时用预置在本地的证书中的公钥校验服务器的数字签名只有签名通过才能成功握手。由于数字签名是使用私钥生成的而私钥只掌握在我们手上中间人无法伪造一个有效的签名因此攻击失败无法抓包。
同时为了防止预置证书被替换在证书存储上可以将证书进行加密后进行「嵌入存储」如嵌入在图片中或一段语音中。 以下针对HTTPS攻击方式可以做一些对应的防护策略 1.使用最新的加密协议和版本持续关注加密协议的发展并使用最新的版本。这可以确保你的通信不被降级攻击所影响。 2.部署安全的证书管理策略确保你的证书来自受信任的颁发机构并定期检查其有效性。同时确保你的服务器配置正确地使用这些证书。 3.使用安全的网络架构通过使用安全的网络架构如DMZ和防火墙你可以限制对服务器的访问从而减少受到攻击的可能性。 4.客户端验证通过在客户端进行验证确保你正在与预期的目标进行通信而不是中间人。 5.定期更新和打补丁及时更新你的系统和软件并应用相关的安全补丁以防止已知的漏洞被利用。 6.监控和日志记录实施强大的监控和日志记录策略以便及时发现并响应任何可疑活动。利用这些日志数据来分析攻击的模式和趋势以便更好地防御未来的攻击。 7.定期审计定期进行安全审计以确保系统的安全性得到验证和维持。这将有助于发现任何潜在的漏洞或不当配置。 8.备份和恢复策略制定详细的备份和恢复策略以防止数据丢失或系统故障。这将确保即使在攻击发生后你也能迅速恢复并继续运营。 9.深度防御策略实施一个深度防御策略其中包括多个层次的安全措施。例如除了使用HTTPS外还可以考虑使用IPSec、SSH等其他加密协议来保护数据的安全性。