架构师之路-https底层原理

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 架构师之路-https底层原理

引子


先说说我对架构师的理解。从业务能力上,需要的是发现问题和解决问题的能力;从团队建设上,需要的是能培养团队的业务能力;从项目管理上,把控好整个项目和软件产品的全生命周期。


我搜索了一下架构师的培训课程,讲什么的也有。实际上是Java从入门到精通的课也冠名架构师课程;讲持久层框架的也冠名架构师课程;讲组件、中间件的也冠名架构师课程;讲分布式系统设计的也冠名架构师课程。个人意见哈,内容其实没有什么问题,但是课程开始之前至少让大家有个整体的视图:

1112728-20211028091830690-1177855627.png熟悉https等常用技术的底层原理,可以增强解决实际问题的能力,作出正确的决策。举个例子:


接到安全团队的指令,要求各个团队梳理域名是否存在证书将要到期的安全风险。怎么来给团队下发具体任务呢?这个问题在文章最后总结并回答。

 

简单入门


先来回答下面两个问题:


1、大家都知道使用https协议传输默认使用443端口,那什么情况下必须使用443,什么情况下不使用443?


大家想一下端口的本质是什么。其实端口有两种,一种是物理端口,比如集线器、路由器的端口。大学的时候记得有门课叫集成电路,里面有讲到过。另一种是逻辑端口,是TCP/IP协议的端口,也常叫网络端口。本质上一个端口是用来绑定服务的,那服务器用监听什么端口,客户端就要向哪个端口发起请求。我们自己也可以写个简单的例子,写过这个例子应该很容易就能明白。《懂了!国际算法体系对称算法DES原理》也有完整的例子。


简单点说服务端可以自己决定什么端口提供服务。但是呢,大家各自为政,记忆起来麻烦也不便于端口管理。所以逻辑端口也进行了划分。其中0~1023是公认端口,比如80就默认是http的端口、443就是https的端口。这样约定好了,就不需要特殊来记了。所以一些对全人类开发的公网网站,就是用的默认端口。但是你自己或者公司内部用的或者和合作方商量好的,也可以用其他端口,只要服务提供方认就行。


2、使用443的端口的同时,80端口还会用吗?


这就是涉及到https的本质了。https本质是http协议上加了一个安全层。安全层做了一些处理,http要做的事情一点也没有减少。就相当于在药粒外加了一层胶囊,本质上起作用的还是药粒呀;快递送来的海鲜放在保鲜箱里还加了保鲜袋本质还是买的海鲜呀。所以当然要用啦。



1112728-20211028091854461-1481364961.png


安全层原理


既然https协议本质只是http上加了安全层,本文就主要将安全层是怎么实现的。当然要靠加密。加密又分成对称加密和非对称加密。要使用对称加密,客户端和服务端要有一个相同的秘钥,这个秘钥怎么能安全的传输就成了问题。非对称加密是公钥只能用来加密,私钥只能用来解密。那服务端自己存私钥,客户端来请求的时候,服务端把公钥发给它就可以了。


那有的朋友就问了,那别的客户端来请求是不是也拿到的是同一个公钥呀,信息就不安全了呀。没错,同一个服务端给所有的客户端返回的是相同的公钥。但是威胁网络安全的黑客需要是截获信息,不是公钥。信息发送方用公钥把信息加密了,黑客没有私钥解不开。

他能拿到公钥和密文,想解开那就只能暴力破解,把所有语言文字的组合用公钥试一下看看和截获到的密文是不是一样的。如果用常用的RSA2048的话,要80年。


总之,非对称加密是比较安全的,但是它慢。通常加解密速度是对称加密的几百倍,信息大了速度还会快速下降。所以https协议是用非对称加密沟通一个对称秘钥。真正的信息就用对称秘钥来加解密了。

 

CA证书


很多人都听过网络抓包吧。抓包的原理和黑客截获信息差不多,都是自己作为一个代理。客户端B想访问C网站,黑客D发现了。D就伪装成了C把自己的公钥发给了B。B发请求“我是B,我的提货卡号码是XBXB”到网站C时,黑客D截获了这个信息,用自己的私钥解开,之后把数据篡改成“我是D,我的提货卡号码是XBXB”发给网站C。于是本来B的东西就被D领走了。抓包也是这种充当代理的原理。


为了防止这一问题。客户端就需要在收到公钥的时候做一下判断,信任的公钥才使用。于是出现了一些大家都很认可的组织,它们可以颁发公钥。


打个比方,在唐朝,贺知章贺老可谓是少有的文坛官场双得意的代表,“二月春风”没少光顾他家。从7品官做到3品大员,是皇帝的老铁,为国服务50年后退休皇帝了还送豪宅,后来还被追封礼部尚书。《长安十二时辰》里那个80多的老头何监就是影射的贺知章,因为他退休前的官职就是监事,人称贺监。不少诗坛大家就是受了他的推荐才与皇帝建立了通信成为了公务员。所以,贺监还有一个身份是“大唐最佳星探”。


这里贺监就是大家都认可的组织,在贺监80多岁的时候,40多岁的李白找到贺监,请求他给自己签发一份公钥。贺监就用自己的私钥给他做了签发写了推荐信,不仅如此,还金龟换酒传为佳话。皇帝想选公务员,李白拿出了贺监的推荐信。皇帝一看,确实是贺监的笔迹,马上就给李白封了公务员。


1112728-20211028091913119-1266943816.png


这里提一下,很多时候https抓包可以成功,原理是客户端很多时候并不验证证书的合法性。有个选项check=false。那至于哪些是认证机构,这个是系统预装的。可以在IE浏览器的internet选项里查到预装的证书。在中国,很多金融机构,它们的认证机构是央行。这些证书都是有有效期的,有的三年一签发、有的五年一签发。


上面图中有显示,证书除了公钥信息,还有数字签名信息。数字签名当然需要有信息来进行签名,具体信息就是我们在生成密钥时需要输入的那些,如下图:


1112728-20211028091926918-1255753196.png


总结


回答开头的问题:


接到安全团队的指令,要求各个团队梳理域名是否存在证书将要到期的安全风险。怎么来给团队下发具体任务呢?


1、要梳理的是提供https服务的服务端,只有服务端才会需要找认证机构签发证书


2、只有需要外部认证的证书有过期的概念,自己签发的可以更新也可以不更新。可以通过向服务端发请求的获取到证书,查看证书是谁签发的、有效期是哪天


架构师经常面临着需要做出正确的决策,比如连续几天团队都在执行生产程序发布,但是后面几天大家有纪律涣散的趋势,这时候应该敏锐的察觉到并及时指出并纠正。这些都需要对原理或者事情的走向有深刻的认知才能做出正确和及时的判断。

相关文章
|
1月前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
1月前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
85 3
|
8天前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
213 89
|
2月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
96 1
|
16天前
|
机器学习/深度学习 算法 PyTorch
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
软演员-评论家算法(Soft Actor-Critic, SAC)是深度强化学习领域的重要进展,基于最大熵框架优化策略,在探索与利用之间实现动态平衡。SAC通过双Q网络设计和自适应温度参数,提升了训练稳定性和样本效率。本文详细解析了SAC的数学原理、网络架构及PyTorch实现,涵盖演员网络的动作采样与对数概率计算、评论家网络的Q值估计及其损失函数,并介绍了完整的SAC智能体实现流程。SAC在连续动作空间中表现出色,具有高样本效率和稳定的训练过程,适合实际应用场景。
71 7
深度强化学习中SAC算法:数学原理、网络架构及其PyTorch实现
|
2月前
|
安全 算法 网络安全
HTTPS原理
HTTPS 通过加密、数字证书、握手过程等多种手段,确保了网络通信的安全和可靠。它为用户提供了更高级别的隐私保护和数据安全,是现代互联网中重要的安全保障机制。随着网络安全威胁的不断增加,HTTPS 的应用也越来越广泛,成为保障网络安全的重要基石。
134 70
|
25天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
3天前
|
数据采集 存储 NoSQL
AArch64架构调用链性能数据采集原理
本次分享的主题是AArch64架构调用链性能数据采集原理,由阿里云苏轩楠分享。主要分为五个部分: 1. 术语解释 2. Frame Pointer RegisterStack Unwind 3. Dwarf-based Stack Unwind 4. /BRBE/CSRE Stack Unwind 5. Kernel-space Stack Unwind&eBPF Unwinders
|
27天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
102 1
|
2月前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!