Linux操作系统安全-证书的申请原理
Linux操作系统安全-证书的申请原理
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.APR的中间人攻击
如下图所示,如果在client和server端有一个中间人攻击就比较麻烦了。 比如典型的ARP攻击,MAN-IN-MIDDLE可以模拟client和server端的IP地址,当client像server端请求公钥时,MAN-IN-MIDDLE模拟server端,生成一个假公钥发给Client端,与此同时他会模拟client端向server端发送请求获取真的公钥。 client端得到假的公钥后使用假的公钥对数据继续加密后发送给它以为的server,结果这个加密钥本来就是MAN-IN-MIDDLE生成的,因此自然是可以用自己的私钥去解开并获取到相应的数据。如果不是铭感信息可能MAN-IN-MINDDLE会原样模拟一份发送给server端,当涉及到铭感信息后,很可能被MAN-IN-MIDDLE加以利用。 因此使用gpg方式加密相对来说是存在安全风险的。为了解决这个问题,就得引入了证书。
二.证书的通信过程
1>.如上图所示,存在四个角色
Server:
一般指的是提供web服务的服务器,为了数据安全会采用SSL/TLS方式加密数据,因此该服务器有自己的公钥和私钥。
Client:
一般指的是全地球网民,一般情况下用户电脑会安装浏览器,而浏览器内部已经封装好相应的RootCA的公钥啦。
CA:
一般指的的是签证机构,它们有权利颁发证书
RootCA:
即根CA机构,根CA机构要完成自签名的证书。
2>.证书申请原理剖析
CA机构向RootCA机构获取证书颁发权限:
其实CA机构向RootCA机构获取授权证书颁发权限和咱们生活中的案例很像,比如:各个县区公安局需要向省/市公安局获取颁发身份证权限一样,一旦各个县区获取了颁发身份证的权限后,各县区就可以处理各自的镇,村,乡等居民的身份证办理,那样就不用全省的人都去同一个地方办理身份证,从而减少了压力。
不过一般来说,CA机构可以颁发证书权限是有一个有效期的哟。 Server端向CA机构发送证书请求:
1>.首先为了网络上的数据安全性,通常我们会对数据进行加密操作,前面我们介绍了对称加密和非对称加密以及单项散列算法方式加密,在证书方面采用的是非对称加密,因此Server需要自己生成公钥和私钥;
2>.Server端使用CA机构的公钥对Server端的公钥进行加密生成证书请求发送给CA机构;
3>.CA机构收到Servcer端发送来的证书请求,会使用CA机构自己的私钥将证书请求解密,得到Server的公钥,将Server的公钥使用CA机构的私钥进行加密后,再连同CA机构信息(颁发者),证书有效期,签名算法等信息(一般采用的是X.509标准)一并发送给Server,信息也会再CA机构中记录,当然这个得需要企业付费哈;
4>.由于Server已经向CA机构成功获取CA颁发的证书,而且在CA机构是有记录的,此时他就可以放心使用私钥对数据进行加密操作了;
5>.Clients发送https请求给Server,等待Server的第一次响应;
6>.Server收到Clients的请求后,通过权限验证后确认Clients有资格访问本地资源需要做出相应给相应的客户端,当需要发送数据时会用自己的私钥对数据进行加密操作并将证书一起发送给Client的浏览器;
7>.Clients收到Server的响应信息后,首先判断响应信息的证书有效性,此时由于Clients的浏览器中有相应的RootCA的公钥,自然可以查阅到RootCA所颁发的证书机构,发现Server发来的证书认证机构的确在RootCA所颁发的CA机构记录中,那么就说明Server是被RootCA所信任的,于是就用Server的公钥对数据进行解密。
三.CA和证书
1>.PKI(全称Public Key Infrastructure)
签证机构:
CA(Certificate Authority),可以颁发证书的机构
注册机构:
RA,注册机构是无权限颁发证书的(就好像我们当地的派出所是没有权限颁身份证的,但是当地派出所可以收集当地居民信息,即当地居民可以在当地派出所进行注册,再由当地派出所向县区里提交信息,颁发身份证的一般由县或者区来颁发)
证书吊销列表:
CRL,一个存放被吊销证书的列表
证书存取库:
即存放证书的列表
2>.X.509(定义了证书的结构以及认证协议标准)
版本号
序列号
签名算法
颁发者
有效期限
主体名称
主体公钥
CRL分发点
扩展信息
发行者签名
四.证书获取
1>.证书类型
证书授权机构的证书:
CA机构自己的证书。
服务器:
给某个网站服务器的证书,以cnblog为例,他们购买的就泛域名,价格上来说要比直接购买www.cnblogs.com要贵得多。
用户证书:
证明用户的身份,经常用于邮件。
2>.获取证书的两种方法
使用证书授权机构
生成证书请求(csr)
将证书请求csr发送给CA
CA签名颁发证书 自签名的证书
自已签发自己的公钥
五.安全协议
SSL:Secure Socket Layer,TLS: Transport Layer Security
1995:
SSL 2.0 Netscape(该浏览器是付费的,这也就是后来为什么IE,Googel浏览器相继横空出世的一个重要因素吧,这个360公司开发的免费的杀毒软件一样,直接让一些传统的杀毒软件公司黄掉了)
1996:
SSL 3.0
1999:
TLS 1.0
2006:
TLS 1.1 IETF(Internet工程任务组) RFC 4346
2008:
TLS 1.2 当前主流使用
2015:
TLS 1.3
功能:
机密性:
对数据进行加密。
认证:
验证身份。
完整性:
数据在传输过程中没有被破坏。
重放保护:
数据在发送中不允许重新发送,什么是重新发送?举个例子,A和B在通信过程中,若A往B发送数据请求登录验证,正常情况下会使用B的公钥对数据进行加密,并发送给B。若A的数据发送给B之前,被C来拦截下来了,由于数据已经被A使用B的公钥加密过了,因此C是破解不了数据的。但是C如果能将这个数据的IP头部信息修改成自己的IP地址并重新发送给B,那么C就间接实现了登录操作,测试A用户还一脸懵逼中。
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):
客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
应用阶段:
在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
如上图所示,SSL/TLS有很多协议(我们也可以说是SSL/TLS协议栈),以下是简要介绍:
Handshake协议:
包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
ChangeCipherSpec 协议:
一条消息表明握手协议已经完成
Alert 协议:
对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告
Record 协议:
包括对消息的分段、压缩、消息认证和完整性保护、加密等
HTTPS 协议:
就是"HTTP 协议"和"SSL/TLS 协议"的组合。"HTTP over SSL”或"HTTP over TLS",对http协议的文本数据进行加密处理后,成为二进制形式传输。HTTPS协议结构如下图所示。
六.HTTPS工作过程
https 实现过程如下:
1>.客户端发起HTTPS请求:
客户端访问某个web端的https地址,一般都是443端口
2>.服务端的配置:
采用https协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作,目前国内很多网站都自己做的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,就像一把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给别人让他锁住一个箱子,里面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可以打开的。
3>.传送证书:
服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。
4>.客户端解析证书:
这部分工作是有客户端完成的,首先会验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框提示证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加密,就像2步骤所说把随机值锁起来,不让别人看到。
5>.传送4步骤的加密数据:
就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值进行加密解密了。
6>.服务端解密信息:
服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,对称加密就是将信息和私钥通过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。
7>.传输加密后的信息:
服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。
8>.客户端解密信息:
客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据一直是加密的,因此即使第三方获取到数据也无法知道其详细内容。
Linux操作系统安全-证书的申请原理的更多相关文章
- Linux操作系统安全-使用gpg实现对称加密
Linux操作系统安全-使用gpg实现对称加密 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.gpg工具包概述 1>.什么是gpg GnuPG是GNU负责安全通信和数据存 ...
- 深挖计算机基础:趣谈Linux操作系统学习笔记
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔 ...
- Linux操作系统原理
Linux操作系统原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机经历的四个时代 1.第一代: 真空管计算机,输入和输出:穿孔卡片,对计算机操作起来非常不便,做一件事 ...
- Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇
Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验架构说明 node101 ...
- 【笔记】计算机原理,网络,Linux操作系统
一,计算机原理 1,化繁为简的思想,产生二进制,产生把所有计算归结为加法运算 二,网络 1,分层思想,产生ISO七层协议,商用了TCP/IP的五层协议 三,Linux操作系统 1,分层思想,硬件-&g ...
- linux免费https证书申请教程
linux免费https证书申请教程直接去阿里云 菜单有个证书服务进去有个购买证书菜单 选择免费的 然后会提示写个人资料 然后系统生成csr 然后提交审核这个时候会有份邮件 文件下载上传到你的服务器 ...
- 服务器与Linux操作系统基础原理
1.服务器 2.Linux操作系统 1. 服务器 服务器定义与分类: 定义:一个管理资源并为用户提供服务的计算机软件. 按应用分类:通常分为文件服务器(能使用户在其它计算机访问文件),数据库服务器和应 ...
- iOS-App发布证书的申请与使用
i开发环境:xcode5.1.1 iphonesdk:7.1 开发机器:iMac 真机部署测试:apple个人开发者ID 向导: 必备IDP证书和distribution证书(第一个证书是真机部署测试 ...
- Linux操作系统安全-OpenSSL工具常用命令介绍
Linux操作系统安全-OpenSSL工具常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OpenSSL开源项目有三个组件 openssl: 多用途的命令行工具,包 ...
随机推荐
- html表格及列表
表格的属性: border:边框 cellpadding:内边距 单元格边框跟内容之间的间距 cellspacing:外边距 单元格跟单元格之间的距离 align:表格的对其样式 width:宽度 ...
- Mysql 视图&事务&触发器
参考资料 一.视图 视图的含义: 视图是一个虚拟表,是从数据库中一个或者多个表中导出来的表. 1.创建视图 #语法:CREATE VIEW 视图名称 AS SQL语句 create view teac ...
- 学习input
认识input: 在网页中,我们经常都会遇到一些交互页面,比如登录.注册.评论等页面.你知道在html中用的是那些标签吗?今天我们要学习的就是其中最主要的一个标签,即<input>标签. ...
- 【day05】css
一.盒模型(BoxModel) 1.width 宽度 2.height 高度 说明: 块元素和有宽高属性的标记(img,input) 能设置宽度和高度,而行元素不能设置宽高 3 ...
- 图论问题(1) : hdu 1198
题目转自hdu 1198,题目传送门 题目大意: 给你11种单位水管摆放位置,若上下或左右有水管连接则视为这两点相连. 最后让你求这些张图中有几个连通块. 解题思路: 本来觉得这道题很简单,不就一个建 ...
- Qt Quick 组件与动态对象
博客24## 一.Components(组件) Component 是由 Qt 框架或开发者封装好的.只暴露了必要接口的 QML 类型,可以重复利用.一个 QML 组件就像一个黑盒子,它通过属性.信号 ...
- enum一个最不像class的class
enum一个最不像class的classjava枚举类型是jdk5出现的.它的出现主要为了解决一些有特殊意义,已经确定的,长度不会改变的集合. //月份描述 public class Month { ...
- scrapy初步解析源码即深度使用
scrapy深度爬虫 ——编辑:大牧莫邪 本章内容 深度爬虫概述 scrapy Spider实现的深度爬虫 scrapy CrawlSpdier实现的深度爬虫 案例操作 课程内容 1. 深度爬虫概述 ...
- c#的IDisposable
尽量在using中使用非托管资源 1.实现Dispose方法 2.提取一个受保护的Dispose虚方法,在该方法中实现具体的释放资源的逻辑 3.添加析构函数 4.添加一个私有的bool类型的字段,作为 ...
- 一个简单的 ValueTask 的示例
Task 确实有潜在的缺点,特别是对于实例创建很多 并且高吞吐量和性能是关键问题的场景 : Task 是一个类.作为一个类,这意味着任何需要创建一个对象的操作都需要分配一个对象,分配的对象越多, ...