当前位置: 首页 > news >正文

从加解密到HTTPS

一、名词解释

  • 明文:未经加密的信息。
  • 密文:加了密的信息。
  • 密钥:加解密时供算法使用的密码(相当于我们的银行密码),另一种说法是盐值。
  • 私钥:个人所有的不经公开的密钥。
  • 公钥:公开的密钥。

二、加密和解密

1、含义

明文通过一定的算法转换成密文的过程就是加密;相反将密文通过使用加密时用的相同算法进行逆运算得到明文的过程就是解密。

比如:密钥是1,明文是100,算法是加减法

加密过程:明文100-->加密(100+1=101)-->密文(101),解密过程:密文(101)-->解密(101-1=100)-->明文100

2、对称加密

对称加密就是指加密和解密的密钥是相同的。特点是安全系数不高,但性能高(加解密快)。

3、非对称加密

非对称加密就是指加密用的密钥和解密的密钥是不相同的。一般来说指:加密时使用公钥,解密时使用私钥。CS架构中,私钥只存在于服务端,客户端只持有公钥具有加密能力。特点是安全系数高,但性能低(算法复杂加解密慢)。

4、SSL与TLS

SSL是结合对称加密和非对称加密各自的优点的产物,其运用于HTTPS中,有效地解决了数据在网络传输中的安全问题,不再像HTTP那样让数据以明文方式在网络中裸跑了。HTTPS中SSL的加解密过程:

一次HTTPS请求中,客户端和服务端先要确定加密的密钥,然后才是正式的数据传输。客户端会先向服务端索要公钥,然后自己生成对称加密的密钥(随机数),然后用公钥加密对称加密的密钥,将其发送给服务端,最后各自通过对称加密的密钥对传输的数据进行加密传输。

目前SSL已经被淘汰,现在使用的都是TLS 1.2或者1.3。他们二者机制大体同源,但SSL所有的版本都不安全,现在HTTPS底层只跑TLS。

三、数字证书

1、含义和分类

证书,顾名思义证明某种东西确实是某样东西。如学校给你发的毕业证书一样,是大家认可的,证明你是某某大学毕业的,证书上也有学校的公章。但你某天去找工作说自己某某大学毕业的,你不能口头说啊,公司又不傻肯定不信,要你出示证书加以证明。其实HTTPS的公钥也是通过数字证书传递的,证书不仅包括公钥信息还包含了公司域名,公司名称,地址,证书的颁发机构,证书的过期时间等等。HTTPS用到的证书被称为SSL证书,当然还包括其他证书,具体分类:

  • SSL证书
  • 代码证书
  • 客户端证书
  • 双因素证书

2、证书的制作

1)jdk(内网调试)

2)上线申请阿里云、腾讯云DV免费证书(外网)

3、证书的大致内容

公钥、算法、证书颁发者、证书的过期时间、密钥等

根证书:证书有很多类别,如果不加以区分让一个对象来负责颁发所有的证书,那么无疑会增加其负重。所以就像公司一样针对不同的功能设立不同的部门,分别负责各自的职责范围的事,这样不仅对事务进行了平摊减轻单个的负重而且也减少了出错的概率。其实证书的管理机制也是如此,先由一个大的根证书分散出分支证书,形成证书路径。如果根证书验证不通过或者不受信任,其下的所属证书也是无效的。

证书路径:如下图就是证书路径的展示。其大致表示*.csdn.net的证书由Geo Trust CN RSA CA G1颁发,而它又是根证书Digicert管理、授权。

4、CA

CA是Certificate Authority的缩写,也叫“证书授权中心”,专门颁发权威证书的机构。证书是可以自己制作的,但是在实际应用中,如何确保证书的安全可靠呢?那就必须有个受信任的机构或公司专门来做这事儿。CA就是这样的机构。

四、HTTPS

1、含义

HTTPS(HyperText Transfer Protocol Secure)安全版超文本传输协议。可以说,HTTPS = HTTP通信 + TLS加密 + 数字证书身份认证。其中http负责说话的内容,TLS负责加密说话的内容,数字证书(SSL证书)负责验证对方身份。

扩展:HSTS

HSTS是国际互联网工程组织 IETE 正在推行一种新的 Web安全协议HTTP Strict Transport Security(HSTS)。采用 HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。

每次访问时都会发送该请求头,失效时间是两年(秒数),这个失效时间每次都会设置为两年后:

Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

2、HTTPS握手工作流程

①、你打开网页,服务器主动把数字证书发给浏览器

②、浏览器校验证书真伪(CA签名、有效期、域名匹配),假证书直接报错

③、校验通过,读取证书里的公钥

④、浏览器随机生成一把会话密钥,用公钥加密后发给网站服务器

⑤、只有网站自己的私钥能解开,拿到会话密钥,后续双方用会话密钥加密传输数据;

全程就算是数据被黑客拦截,也只是乱码。

ps:公钥放在证书里,公开随便看,用来加密;而私钥是网站服务器自己保存,绝不外传,用来解密。

3、黑客攻击

如果你是黑客,要怎么去攻击https通信,窃取他们之间的通信讯息呢?

①、中间人劫持

客户端(公钥+会话密钥)-> 黑客(看不到会话密钥,因为会话密钥只能私钥才能解,于是黑客伪装客户端,将公钥+黑客会话密钥发送给服务器)-> 服务器(拿到黑客给的公钥加密后会话密钥,与黑客通信)。这个过程中,黑客始终是不知道客户端与服务器的会话密钥的,只会让客户端和服务器对不上暗号,通信失败,窃取不到数据。

②、中间人伪造证书

中间人这次伪装成服务器,伪造一套公私钥,假装自己就是服务器。

客户端 -> 中间人黑客(假服务器)->真服务器

对于客户端,黑客就是服务器,对于真服务器黑客就是客户端。所以就达到窃听了,但是客户端有办法鉴别黑客伪装的服务器,因为浏览器会自动校验对方的证书,如果是非受信任(非正规证书机构颁发的)的就会告警,这时客户端是能感知到的,于是就拒绝访问,从而避免窃听。

面试题:

既然说https是安全的,为什么抓包工具还是能窃听到明文信息呢?

答:抓包工具就是利用中间人伪造证书的方式,然后你也同意了这种非受信任的证书的通信。

五、利用JDK工具生成自签证书

我们在开发https协议的Web应用时,需要先在本地进行调试,或者在内网服务实现https时。我们希望自己就能生成自签的证书、以及公钥私钥。那么JDK的keytool工具就能实现这点,以下分解聊下怎么使用该工具。

1、前置条件

①、配置好JDK环境变量,cmd 终端输入keytool -version能输出版本即生效

②、Windows使用CMD/PowerShell,Mac上使用Linux终端

2、核心概念

密钥库(.keystore/.jks):二进制文件,用来存放一对公私钥+字签证书,JavaWeb(SpringBoot、Tomcat)默认读取jks密钥库。

公钥:封装在证书里对外公开

私钥:存放在密钥库内部,绝不泄漏

字签证书:自己给自己发证,浏览器不信任。

3、一键生成JKS密钥库

keytool -genkeypair -alias myhttps -keyalg RSA -keysize 2048 -storetype JKS -keystore myssl.jks -validity 365

参数解释

-alias myhttps:密钥别名,一个密钥库可以存多组密钥,别名区分

-keyalg RSA:加密算法,HTTPS标准RSA

-keysize 2048:密钥长度,安全最低标准

-storetype JKS:密钥库格式(Java专用)

-keystore myssl.jks:生成的密钥库文件名

-validity 365:证书有效期365天

执行后依此填写信息

1、密钥库口令:设置密码,123456

2、姓名、组织、城市、省份、国家

3、是否正确

4、密钥口令可和密钥库口令一致,直接回车

执行完毕后,当前文件夹生成myssl.jks文件

4、从JKS文件中导出证书

导出公钥证书,浏览器需要的公钥直接从证书中获取。

keytool -exportcert -alias myhttps -keystore myssl.jks -file public.cer

执行后提示输入密钥库密码,之后就会得到public.cer文件,这个文件里包含了公钥+证书信息,可以发给其他人。(私钥还是在jks文件内部,无法从cer证书提取私钥)

5、把证书导入JDK信任库

这步是为了解决本地调用接口报证书不信任。本地Java后端调用自己的HTTPS接口报错SSL握手失败,把cer导入JDK信任列表。

keytool -import -alias myhttps-trust -file public.cer -keystore "%JAVA_HOME%\jre\lib\security\cacerts"

执行后提示输入信任库密码,默认:changeit

6、SpringBoot项目配置Https

application.yml

server: port:8443 ssl: key-store:classpath:myssl.jks key-store-password:123456 key-alias:myhttps key-store-type:JKS

启动项目,访问https://127.0.0.1:8443,浏览器提示不安全属于正常现象(字签证书),选择继续访问即可调试

http://www.jsqmd.com/news/1367007/

相关文章:

  • FanControl终极指南:高效掌控Windows系统风扇与散热管理
  • 存量房翻新涂料品牌怎么联系 高效对接芙兰雅艺术涂料 - 热点品牌推荐
  • 西安社区服务软件开发实战:从需求到上线的完整指南
  • Energy AI:像调用函数一样集成AI能力,解决工程化落地痛点
  • Ludusavi:游戏进度的智能守护者,从此告别存档丢失的烦恼
  • 当Windows安装程序“自作主张“时:In-Place_Upgrade_Helper如何帮你夺回控制权
  • 终极戴尔笔记本风扇控制指南:让你的设备静音又凉爽
  • RuoYi-Vue:5步快速搭建企业级权限管理系统的终极指南
  • VSFilterMod 深度解析:现代化 ASS 字幕渲染器的技术架构与集成指南
  • 聚酒顺酒业 南京全区域专业名酒回收 诚信经营高价变现 - 代码渡客
  • VC运行库全解析:从原理到安装排错,解决DLL缺失问题
  • 逆向分析协作:评审结论怎样落地
  • 西安社区服务软件开发实战指南:从需求到上线全流程
  • ATCC 13709 金黄色葡萄球菌(Staphylococcus aureus):Smith株
  • 终极解密:如何3步突破大麦网API加密机制实现自动化抢票
  • 黑龙江烘干塔订购实操攻略 河南康隆机械有限公司(黑龙江运营中心) - 热点品牌推荐
  • 《Essential C++》笔记之(static)静态类成员
  • 如何快速掌握Scan Tailor:扫描文档优化的终极完整指南
  • 基于Transformer与PostgreSQL的向量检索实战:从原理到应用
  • 终极指南:如何免费下载B站大会员4K高清视频的完整教程
  • 2026年TPEP防腐钢管厂家挑选攻略:河北燃立及行业优质企业盘点 - 自由和远方
  • Windows系统安全终极指南:OpenArk开源反Rootkit工具完全解析
  • 2026年正规的阳澄湖鲜蟹定制工厂用户力荐 - 工业品网
  • 个人原始档案在哪查|应届生 政审办事攻略 - 趣闻早乐评
  • 告别Windows 11界面困惑:ExplorerPatcher让经典操作体验回归的完整指南
  • Remotion跨平台部署终极指南:从React组件到多环境视频生成
  • 河北电动密集柜生产厂家定做服务 河北恒美通办公家具有限公司(河北服务中心) - 热点品牌推荐
  • BilibiliDown:专业级B站视频下载与音频提取解决方案
  • 3大创新功能解密:OpCore-Simplify如何让黑苹果配置效率提升80%
  • 终极指南:如何高效解决游戏MOD开发中的数据编辑难题