百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

SSL加密第一集:数字签名和数字证书

lipiwang 2024-10-20 10:10 10 浏览 0 评论

ssl可以理解为安全版本的tcp通讯,它可以对网络传输的数据进行加密,普通的网络通讯都是明文传输,没有加密的。ssl协议是基于tcp/ip之上的协议,它还是基于tcp/ip的通讯方法,只不过它定义了一套密钥协商机制以及用了通讯加密手段。ssl作为用于电子商务、银行等涉及到交易信息、用户信息等敏感信息传输上的加密手段。在了解ssl之前,先要了解对称加密、非对称加密、数字签名、数字证书。因为ssl是基于这些工具打造出来的。

1、对称加密

对称加密只有一把密钥,明文用这把密钥加密后可以转化为密文,密文再用同一把钥匙解密。就像家里门锁,只能有一把钥匙打开或者锁上。当然可以拿这把钥匙去配多把一样的给多个人用,这样拿到这个钥匙的人都能对门进行锁上和打开操作。常用的对称加密算法有DES、3DES、AES等。对称加密的优点是加密速度快,适合对大量信息进行加密,缺点是密钥一旦丢失将导致密文泄漏。

2、非对称加密

非对称加密比较有意思,它有两把钥匙对,A和B,用A加密只能用B解密,用B加密也只能用A解密。有一把钥匙可以公开出去,另一把钥匙自己留着,公开出去的叫公钥,自己留着的钥匙叫私钥。比如A钥匙自己留着,钥匙A叫私钥,B钥匙公开出去则叫公钥。公钥可以复制多把给很多人用。

非对称的这种机制极大减低因钥匙泄漏导致密文被破解问题,使用对称加密时,在密钥传输过程中有可能导致密钥泄漏,一旦密钥泄漏将导致整个加密崩溃。而非对称加密采用公私钥对方法,只要自己保存好私钥,公钥可以任意传输。但非对称加密也有缺点,就是加密速度慢,只能用于少量信息的加密。常用的非对称加密算法有RSA、ECC等。

3、数字签名

张三要求李四给他写一封加密信,打算用非对称加密方法。张三自己先生成一对密钥A和B,A作为私钥留给自己,B作为公钥给了李四。李四收到李四的公钥后就开始写信,并用李四给的公钥B对信进行加密。李四把写好的信邮递给了张三,张三用自己的私钥解开信件。

张三收到李四的信后会有两个疑问:

1、这封信的内容怎么证明没有被篡改过?

2、怎么证明这个信是李四写的,难道不是别人冒充的?

要解决这两个问题就要用到数字签名技术了。下面看一下怎么操作。

李四:

1、李四生成一对密钥C和D,C作为私钥留给自己,D作为公钥给张三

2、李四写完信后对信的内容用Hash函数对信生成一段摘要,把这段摘要用私钥C加密后付在信的后面一起发给张三。

张三:

1、收到信后先用自己的私钥把信解出来,并用hash生成摘要

2、用李四的公钥把摘要密文解出来,跟自己生成的摘要进行对比,如果一致则说明信没有被篡改过,而且可以肯定这封信就是李四写的。

由此可见,数字签名是利用信息摘要和非对称加密证明信息的完整性(没被篡改)和信息发送方的身份的一种技术。

4、数字证书

王五想冒充李四给张三写封信,他偷偷拿了张三的电脑,把里面李四的公钥D换成他自己的,然后用自己的私钥对信件摘要加密,用张三的公钥B对信件内容加密。把这封冒牌信发给张三。怎么解决这种偷梁换柱的问题呢?张三只要证明李四给的公钥就是李四本人的就行。张三要求李四拿他的公钥去公证处做一下公证,然后将公钥以数字证书的形式发给张三。

4.1 根证书

CA认证中心是第三方权威的认证机构,李四将自己的信息和公钥提交给CA机构,CA机构再三确认李四信息无误后会给李四提交的文件“盖个章”,表示这是经过权威就够认证无误的。

首先,CA机构自己生成一对密钥,私钥自己保存,公钥任何人都可以下载。CA分发公钥不是直接分发的,而是以证书的形式分发的,这个CA自己的证书也叫“根证书”。下面用openss模拟CA生成根证书:

1、生成非对称加密的私钥,下面这个命令将生成私钥ca.pem,公钥可以有该私钥产生。

openssl genrsa -out ca.pem 2048

genrsa: 产生rsa密钥

2048:密钥长度为2048字节

2、生成csr文件,该文件主要有两部分组成,一部分是描述该CA机构的信息,另一部分是CA的公钥。输入这条命令后需要输入CA机构的信息

openssl req -new  -key ca.pem -out ca.csr

req:证书签发申请命令

-new:产生新的文件

-key: 密钥,这里会根据私钥提取公钥附在证书上

可以用以下命令查看ca.csr文件:

openssl req -in ca.csr -text -noout

可以看到,csr文件有刚输入的ca机构信息和从ca.pem提取的公钥。

3、生成数字证书ca.crt,该证书主要是对ca.csr的摘要信息用ca.pem私钥加密,并把加密的摘要附在后面

openssl x509 -req -in ca.csr -out ca.crt -signkey ca.pem-days 3650

x509:证书格式

-singnkey: 自签名密钥

-days:证书有效期

用下面的命令可以查看ca.crt文件信息

openssl x509 -in ca.crt -text -noout

总结一下:

ca.pem:rsa非对称加密私钥,用该私钥能推导出公钥

ca.csr:根证书申请文件,该文件有申请者的信息和公钥

ca.crt:根证书,主要内容是ca.csr+数字签名

ca.crt是公开的,使用者可以下载,主要是用里面ca的公钥。

4.2 申请ca证书

李四想要CA机构申请自己的证书该怎么办呢?下面用openssl模拟ca机构来为李四签发数字证书

1、李四先生成自己的非对称加密密钥LiSi.pem

openssl genrsa -out LiSi.pem 2048

2、李四生成LiSi.src文件,需要填写上李四的信息

openssl req -new  -key LiSi.pem -out LiSi.csr

3、李四将该csr提交给ca中心,ca中心根据李四提交的csr进行签名,最后ca生成给李四的数字证书是LiSi.crt文件

openssl x509 -req -in LiSi.csr -out LiSi.crt -CA ../ca.crt -CAkey ../ca.pem -CAcreateserial -days 3650

用openssl x509 -in LiSi.crt -text -noout看一下李四的数字证书中都有什么?

可以看出,李四的数字证书中包含:版本+证书序号+ca机构信息+证书有效期+李四个人信息+李四公钥+ca对李四csr的数字签名

4、李四得到证书后可以验证一下证书的有效性

openssl verify -CAfile ../ca.crt  LiSi.crt

验证的方法就是用根证书的公钥去验证ca的数字签名即可

5、李四给张三写加密信的完整流程

1、李四和张三都从ca机构下载根证书

2、李四和张三都向ca机构申请数字证书

3、互换数字证书并用根证书验证

4、李四用张三的证书中的公钥对信加密

5、李四用私钥对信进行签名

6、李四将加密的信和签名都发给张三

7、张三收到信后先用私钥解开加密的信,在用李四证书中的公钥验证签名

8、签名验证成功,张三可以看信了

6、总结第一下

数字签名:一种证明信息完整性和信息发送者身份的方法,所用的技术是信息摘要和非对称加密。

数字证书:有第三方权威机构出具的可证明信息可靠性的方法,所用的技术是数字签名。

蚂蚁集团网站上能申请比赛获奖证书,这种证书就是类似于数字证书。传统的获奖证书是纸质的,上面写着获奖人的信息、参加的比赛以及得了几等奖。右下角有颁发机构的签名盖章。这种纸质的证书不好在网上流传,一种用数字证书的方法提供的电子版证书就能代替传统的纸质证书。

相关推荐

前端入门——css 网格轨道详细介绍

上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...

Islands Architecture(孤岛架构)在携程新版首页的实践

一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...

HTML中script标签中的那些属性

HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...

CSS 中各种居中你真的玩明白了么

页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...

CSS样式更改——列表、表格和轮廓

上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...

一文吃透 CSS Flex 布局

原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...

css实现多行文本的展开收起

背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...

css 垂直居中的几种实现方式

前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...

WordPress固定链接设置

WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...

面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿

前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...

3种CSS清除浮动的方法

今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...

2025 年 CSS 终于要支持强大的自定义函数了?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...

css3属性(transform)的一个css3动画小应用

闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...

CSS基础知识(七)CSS背景

一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...

CSS 水平居中方式二

<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...

取消回复欢迎 发表评论: