答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

这篇具有很好参考价值的文章主要介绍了答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

本期答疑解惑将和大家一起认识SSL/TLS 协议。请尝试回答以下几个问题:

  1. 使用浏览器访问https网站和http网站有什么不同?
  2. SSL协议作用于网络模型的哪一层?
  3. 你知道CSDN,博客园正在使用的是什么类型的SSL证书吗?
  4. SSL,TLS, mTLS之间是什么关系?

非对称加密算法

非对称加密算法是数学家们创造出来的,它是SSL协议的基础。该算法的目的是生成一对密钥:公钥和私钥,密钥通常是一段二进制数据。公钥是公开的,任何人都可以获得;而私钥只由服务器保管。

公钥和私钥永远是一对一的关系,公钥加密后的数据只能由私钥解密。

SSL协议

SSL协议是一种介于应用层和传输层之间的安全协议。SSL建立安全链接之后,应用层将不再把数据直接交给传输层,而是通过SSL加密通道发送,避免中间人攻击。

应用层:HTTP,HTTPs,FTP等
                SSL,TLS,mTLS
传输层:TCP, UDP等

在详细了解SSL协议机制之前,我们先来认识下什么是SSL证书。

SSL证书

SSL证书就是服务器的电子身份证。任何人都可以制作SSL证书,但只有全球公认的证书颁发机构(CA)颁发的证书才能被浏览器和操作系统所信任。这是因为浏览器和操作系统预装了受信任的CA根证书,并且能够在线查询受信任的证书库,验证服务器的真实性。

证书通常包含了服务器所有者的信息,比如持有者的名称,有效期,公钥,加密算法等信息。

  1. 客户端拿到证书中的公钥之后,可以对要发送的数据进行加密,只有服务器所持有的私钥才能解密,因此保证了数据传输的安全性。
  2. 证书包含了自身的数字签名,它由证书内容和私钥计算生成,除非攻击者获得了服务器手里的私钥,否则无法被篡改。
  3. 信任链:CA不会直接使用根证书为第三方网站签发证书,而是使用中间证书签发,中间证书由CA根证书直接签发。CA使用三层证书信任链是为了将证书管理划分成多个部分,降低管理成本和风险,提高管理效率。
  4. 浏览器会向上追溯证书链和证书的有效期,直到找到受信任的证书为止。

早期SSL工作原理

早期SSL的核心思想是通过非对称加密交换证书和主密钥,然后使用主密钥对称加密算法传输内容。

原因很简单:对称加密解密计算速度更快,而使用非对称加密可以避免生成的主密钥被攻击者截获。

握手协议:

  1. 使用浏览器访问https站点时将发起SSL请求,内容包括浏览器支持的加密算法列表。
  2. 服务器确定通信所用的算法,并返回自己的SSL证书(包含公钥)。
  3. 浏览器按照我上面讲的内容去检查证书是否有效,无法验证的证书将给出风险警告。
  4. 浏览器信任服务器证书之后,生成一个密钥并通过证书公钥进行加密,然后发给服务器。
  5. 服务器使用自己持有的私钥解密,拿到客户端生成的密钥之后,就可以使用它进行对称加密通信了。

TLS工作原理

人们逐渐发现早期SSL协议存在许多安全漏洞,如 Heartbleed 漏洞、POODLE 漏洞等,最终于2014年由谷歌微软等公司倡导下陆续宣布弃用。

不过早在1999年,IETF将SSL 3.0进行了修改和扩展,并标准化为了TLS协议。经过不断完善,TLS已经发展成了互联网上最常用的加密协议。我们也可以将TLS看作是SSL的升级版本。

握手协议

  1. 客户端向服务器发送握手请求,并附上自己支持的加密算法列表和一个客户端随机数
  2. 服务器选择一种加密算法,并生成一个服务器随机数发送给客户端。
  3. 服务器将发送TLS证书给客户端,并可能要求客户端也提供证书
  4. 客户端验证服务器证书,按照服务器要求选择是否提供自身的证书。
  5. 客户端再次生成一个随机数,称为预主密钥,使用服务器公钥加密后发送给服务器。
  6. 服务器使用私钥解密,获得预主密钥。
  7. 客户端和服务器使用服务器随机数,客户端随机数,预主密钥,并按照前面约定的加密算法,生成主密钥,之后再由主密钥通过加密算法生成会话密钥
  8. 会话密钥将被用于之后的对称加密通信。

TLS与早期SSL的主要区别

TLS作为SSL的升级版本,修补了大量漏洞,并且优化了握手通信过程。

  1. TLS简化了SSL握手流程(我这里对SSL握手流程介绍的比较简单)。TLS默认需要发送4次请求, 也被称为4次握手。而SSL需要7或者10次请求才能完成握手阶段。
  2. TLS使用更严格的加密算法,移除了MD5, SHA1等存在设计漏洞的加密算法,更加安全。
  3. 警报消息:通信过程中可能出现错误,例如证书过期、加解密失败,握手失败等问题。SSL中包含警告致命两种级别的信息, 当发生致命级别的错误时,链接会被立刻终止,SSL中警报消息是未加密的。TLS新增了“关闭”来通知会话结束,并且TLS的警报消息是加密的。
  4. TLS证书与SSL证书并无太大区别,虽然SSL已经淘汰了,不过大家还是习惯将证书命名为SSL证书。

mTLS简介

前面说过,在TLS握手阶段:服务器将发送TLS证书给客户端,并可能要求客户端也提供证书。

要求客户端也必须提供证书的TLS被称为双向TLS认证,也就是mTLS。

客户端证书通常由企业内部CA颁发,以确保证书的可信度。在使用mTLS时,服务器需要信任客户端证书的CA,并使用CA的公钥来验证证书的数字签名。如果证书的验证成功,则服务器可以确认客户端的身份,并继续进行通信。如果证书验证失败,则服务器可以拒绝该客户端的连接请求。

SSL证书种类

前面介绍的都是理论性的内容,接下来我们认识下常见的证书类型。

EV(Extended Validation )

认证最严格,最贵的证书类型,需要验证申请者身份,营业执照等,如:https://www.paypal.com

答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

OV(Organization Validated)

OV SSL证书保证级别接近EV,其主要目的是在交易过程中加密用户的敏感信息。商业或面向公众的网站应该安装 OV SSL 证书,以确保共享的任何客户信息保持机密。

例如我们正在使用的CSDN, 支付宝等:

答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

DV(Domain Validated)

最容易获取的证书,它通常用于不需要收集个人信息的网站,如公司展示官网,博客等。

博客园使用的其实是DV证书:

答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

个人证书

故名思意,自己搭建的网站,自己造的证书,访问这类网站时会收到浏览器的风险提醒。

我在网上随便找了一个:杨青青个人博客_女程序员的个人网站

答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议

本地证书管理

打开浏览器设置-安全隐私-证书管理,或者Windows的证书管理器,你可以看到本地安装的,受信任的证书,使用受信任的证书签发的证书,也将被信任。

这可以帮助你在公司内部环境中使用 SSL/TLS 加密来保护网络通信,搭建基于https的网站。

总结

好了,这期答疑解惑就到这里,大家还有什么问题吗?文章来源地址https://www.toymoban.com/news/detail-436492.html

到了这里,关于答疑解惑:开发者必须彻底搞懂的 SSL/TLS 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023 年开发者必须知道的 6 个 AI 工具

    自Chat GPT发布以来,AI在各个领域都出现了令人惊艳的产品,在编程方面也是如此。这些由 AI 驱动的工具使用算法快速准确地生成代码,从而节省程序员的时间和精力。虽然目前AI写出来的代码还不能完全替代人类,但开发人员完全可以作为一种辅助的工具。 通过使用深度学

    2024年02月11日
    浏览(44)
  • 开发者必读指南:必须知道的关键性能指标,提升代码性能

    在Web应用程序的开发过程中,性能是一个至关重要的问题。高性能的Web应用程序需要快速响应,并能够处理大量的并发请求。而为了评估Web应用程序的性能状况,我们需要关注一些关键的性能指标。本文将介绍一些常见的Web项目性能指标及其意义。 1)请求响应时间 请求响应

    2024年02月07日
    浏览(53)
  • 9成Android开发者必须收藏的80个开源库

    Android 应用性能调优的技术点 http://zhuanlan.zhihu.com/kaede/20326073 Android 客户端性能优化 http://blog.tingyun.com/web/article/detail/155 美团 WebView性能、体验分析与优化 https://tech.meituan.com/WebViewPerf.html MVC,MVP 和 MVVM 的图示 http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html 不容错过,最全的 Androi

    2024年04月23日
    浏览(47)
  • Android开发者必须收藏的8个开源库,Android开发面试技能介绍

    听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。 在实现的过程中,总是会被

    2024年03月19日
    浏览(80)
  • 全靠这份Java知识点PDF大全,Java开发者必须收藏的8个开源库

    自我介绍 项目中的监控:那个监控指标常见的有哪些? 微服务涉及到的技术以及需要注意的问题有哪些? 注册中心你了解了哪些? consul 的可靠性你了解吗? consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过? 项目用 Spring 比较多,有没有了解 Spring 的原理

    2024年03月23日
    浏览(45)
  • OpenCV学堂 | CV开发者必须懂的9种距离度量方法,内含欧氏距离、切比雪夫距离等(建议收藏)

    本文来源公众号“ OpenCV学堂 ”,仅用于学术分享,侵权删,干货满满。 原文链接:CV开发者必须懂的9种距离度量方法,内含欧氏距离、切比雪夫距离等 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。在本文中,数据科学家 Maarten

    2024年02月20日
    浏览(43)
  • 【人工智能】GPT-4 的使用成本,竟然是GPT-3.5的50倍之多 —— 大语言模型(LLM)开发者必须知道的数字

    GPT-4的使用成本,竟然是GPT-3.5的50倍之多; 而让大语言模型同时处理25个请求的时间,仅是处理单个请求的2倍…… 这些数据听上去可能有些出乎意料,但都是真实的。 它们出自一篇名为《大语言模型(LLM)开发者必须知道的数字》的GitHub文章。 GitHub - ray-project/llm-numbers: Nu

    2024年02月07日
    浏览(72)
  • mac:彻底解决-安装应用后提示:无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件

    mac从浏览器或其他电脑接收了应用,但是点击应用时报错,错误信息 无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件 截图如下: 错误信息 无法打开“XXX”,因为无法验证开发者的问题;无法验证此App不包含恶意软件 在macOS上,如果在打开应用程

    2024年02月03日
    浏览(69)
  • 如何成为一名高效的前端开发者(10X开发者)

    如今,每个人都想成为我们所说的“10倍开发者”。然而,这个术语经常被误解和高估。 本质上,一个高效或者10倍开发者,在我看来,是指那些能够充分利用所有可用工具的人,通过让这些工具处理冗余和重复的任务,使他们能够专注于复杂和创造性的工作。以下是一些成

    2024年02月05日
    浏览(71)
  • 小米手机开发者选项在哪?小米手机怎么打开开发者选项

    小米手机开发者选项在哪?小米手机的开发者选项是什么?开发者选项是小米手机中的隐藏功能,为什么我们会问起这个呢?因为普通的设置我们都很容易就能找到,但开发者模式是需要用特殊的操作才能将其唤醒。下面就让我们看看怎么将这个隐藏设置给唤醒吧! 第1步:

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包