数据加解密原理及私有CA的搭建以及撤销

简单罗列基础命令,只分享我的想法!

一、数据加/解密原理说明

客户端双方在互联网上通信,为了保证信息的安全,有了SSL协议,就是在TCP/IP模型传输层之上应用层之下,叫做安全的套接字层。目的就是为了把应用层的数据进行加密传递给客户端,而在Linux上实现这个协议或这个功能的软件就是OpenSSL。

原理其实就是,双方客户端的SSL层进行协商应用哪种加/解密的方式,ok,如果双方SSL达成一致,上层应用协议又通过SSL进行加密的话,那么双方在互联网上传输的数据就是加密的,这个加密之后的数据到达客户端之后,客户端的SSL就会使用相应的“办法”进行数据解密还原,之后交给资源子网(对应的进程)去处理。原理如图1所示。

图1

常见的加密算法和协议:

1、对称加密:加密和机密使用同一种密钥,算法公开,但是密钥只有通信上方才知道,常见的算法有DES(Data Encryption Standard)56bits,AES(AdvancedEncryption)128bits/192bits/256bits/384bits/512bits,blowfish,twofish,IDEA等,如图2。

特点:加解密使用同一种密钥,把数据分割成固定大小的块儿,逐个加密。

权限:和多少客户端通信就有多少密钥,密钥过多,密钥分发也困难。

图2

2、非对称加密:公钥和私钥成对儿出现,公钥是从私钥中提取出来的,私钥仅允许个人使用,公钥公开。常见的算法有RSA(数字签名和密钥交换),DSA(数字签名),ELGamal等。

特性:使用公钥加密的数据只能通过对应的私钥解密,反之亦然,密钥长度较大512bits/2048bits/4096bits/8192bits。

用处:

身份认证:私钥拥有者用自己的私钥加密,只能用相应的公钥解密。

密钥交换:双方通信之前,首先获得对方的公钥,自己生成一个对称的密钥,用对方的公钥加密这个对称的密钥,只能对方的私钥解密,所以,双方采用对称加密就可以了。

数据加密:很少用数据加密,密钥长度太大,效率很低。

3、单向加密:提取数据的特征码。算法有MD5,SHA1,SHA256,SHA512,SHA384。

特性:

定长输出:无论原来的数据是多大级别,其特征码是一样长度的。

不可逆:不能由特征码推算出数据。

雪崩效应:原始数据的微小改变都能使特征码完全不一样。

用处:用于数据完整性校验和数字签名(用私钥加密特征码就是数字签名)。

说了数据如何加密和如何解密,下面说说双方是如何加密数据传输的,对称密钥加密的数据一般用于保密数据,也就是“有心人”根本看不懂,而非对称加密主要是为了做数字签名保证数据的完整性和来源的真实性,所以,首先需要密钥交换(IKE:Internet Key Exchange,主要是通过公钥加密和DH算法),通信的双方都需要知道这个对称密钥才行,假设双方都已经知道了对方的公钥,则要传输的加密的数据应该是如图3。

图3

图3是在双方都知道对方公钥的情况下的传输数据,如果要保证双方的公钥都是对方的,还需要通过数字证书对公钥信息进行安全分发,数字证书(CA签证机构颁发)的格式(X.509 V3)是:

版本号

序列号:CA用于唯一标示此证书。

签名算法标志:验证证书的有效性。

发行者名称:CA自己的名称。

有效期:开始日期和结束日期。

证书主体持有者:即证书所有者。

证书主体公钥信息:证书拥有者自己的公钥。

发行商唯一标示:计算机更容易识别数字。

证书主体唯一标示

扩展信息

签名:CA对此证书的签名。

证书的工作流程如图4所示:

图4

注意:除了查看CA的有效性之后,还要看这个证书是不是过了有效期和是不是在吊销证书列表中。

二、通过OpenSSL实现SSL的命令说明

OpenSSL的组成部分:

(1)、libcrypto:加密、解密文件。

(2)、libssl:SSL协议的实现

(3)、openssl:多用途命令行工具,每种功能都有相应的子命令实现。

OpenSSL分为标准命令,信息摘要命令和加密命令,如图5

图5

对称加密/解密的实现:

openssl enc -ciphername [-in filename] [-out filename]  [-d] [-a/-base64] [-salt]

-ciphername:算法,des,aes,3des等。

-salt:加随机数,也就是杂质。

-d:解密。

-e:加密。

-a:基于base64,也就是文本编码格式来处理数据。

例如:对/tmp/passwd文件进行加密,如图6,包括所用的算法,你可以从中选择,前文也已经说了,用到的那些对称加密的算法。

可以把/tmp/passwd文件删除,在把加密的/tmp/passwd.key文件进行解密处理,如图7所示。

图6

图7

文件特征码的提取:

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-outfilename] [file...]

命令很简单,直接附图8,多次对同一文件提取特征码,特征码是一样的。

图8

公钥加密实现:

(1)、生成不加密的私钥:

openssl genrsa [-out filename] [numbits]

命令很简单,直接附图9。

图9

(2)、从私钥中提取公钥:

openssl rsa [-in filename] [-pubout]

命令简单,直接附图10。

图10

如何构建私有CA,构建私有CA工作目录在/etc/pki/CA:

(1)、生成私钥,如图11;

图11

注意:私钥必须保存在/etc/pki/CA/private这个目录下,并且私钥必须以.pem结尾,这些都是在/etc/pki/tls/openssl.cnf这个配置命令中说明的,部分如图12所示。

图12

(2)、生成自签证书;

openssl req -x509 -key 私钥 -out/etc/pki/CA/cacert.pem -days #(天数),如图13。

图13

验证CA有效性,同一台主机既是CA又是证书的申请者:

(1)、节点申请证书,步骤如下:

A、在申请证书的主机上,生成私钥

B、生成证书签署要求,如图14

openssl req –new –key 生成的密钥 –out 待签发的证书.csr(必须以.csr结尾)

图14

C、把请求发送给CA

(2)、CA签发证书

A、验证请求者信息

B、签署证书,如图15

openssl ca -in 申请的证书.csr -out 获批的证书.crt -days 360

图15

注意:在签署证书的时候会报错,根据提示创建index.txt(证书索引文件)和serial文件(定义接下来颁发证书的序列号),可以看一下配置文件,上文我已经说了。

C、把签署好的证书发给申请者

吊销之前颁发的证书(就是httpd.crt):

获取吊销证书的序列号和index.txt做比较

openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject

吊销证书:

openssl ca -revoke /etc/httpd/ssl/httpd.crt(发过来要吊销的证书)

生成吊销证书的编号

echo 01 > crlnumber(没有自己创建)

更新证书吊销列表

openssl ca -gencrl -out diaoxiao.crl(没有可以自己创建)

注意:只附上吊销的一个截图,对比/etc/pki/tls/openssl.cnf添加缺少的文件即可。

图16

有志同道合的“战友”可以加我qq:865765761。

时间: 2024-10-19 15:37:30

数据加解密原理及私有CA的搭建以及撤销的相关文章

openssl加解密原理及私有CA的建立

一.openssl加解密原理 数据加密解密过程数据加密需要实现的功能:数据私密性,数据完整性,身份认证和秘钥交换. 美国NIST,为了计算机的安全,提出了几个要求: 1.数据保密性   数据保密性   隐私性 2.完整性    数据完整性   系统完整性 3.可用性 4.真实性 && 可追溯性 OSI:x.800  安全攻击:   被动攻击:窃听   主动攻击:伪装.重播.消息修改.拒绝服务  安全机制:   加密.数字签名.访问控制.数据完整性.认证交换.流量填充.路由控制.公证  安全

网络安全(2)-数据加解密

之前讲了身份认证,身份认证可以让我们确认收到的数据来自正确的发送者.但是传送的数据在经过中间节点的时候(或者在无线信道下并不需要经过中间节点,只要能够收到信号)可能会被偷听者收到,我们并不能阻止数据包被偷听者获取,因为数据包在在网线上或无线信道上传输,任何人都有可能通过信号接收设备获取传输的模拟信号,从而进一步解析得到以太网帧(或其他链路层协议帧).IP报文.UDP/TCP报文.应用层数据....     我们能做的就是让偷听者即使获取了我们传输的数据,也无法知道我们传的到底是什么,即对数据进行

AES CBC/CTR 加解密原理

So, lets look at how CBC works first. The following picture shows the encryption when using CBC (in this case, using AES as the cipher). Basically, Cipher-Block-Chaining means that previous to putting the cleartext data block into the cipher itself (

shiro框架学习-6-Shiro内置的Filter过滤器及数据加解密

1.  shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.apache.shiro.web.filter.mgt; import java.util.LinkedHashMap; import ja

OpenSSL以及私有CA的搭建

首先我们肯定会问什么是OpneSSL,以及OpenSSL有什么用?当让这不仅是刚接触Linux的我想知道,相信大多数人和我一样也非常想知道,因为OpenSSL是linux上基础的服务之一,了解它的应用可以帮助我们更好的了解linux.那么我们先了解下什么是OpenSSL已经它有什么用. 一.OpenSSL及其应用 首先我们要了解SSL是什么?SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输.Netscape公司在推出第一个Web浏览

加解密技术,以及私有CA的搭建

一.前言 进入21世纪,人们的生活已经严重依赖于互联网,衣.食.住.行,互联网已经渗透到生活的第一个角落,这也给某些不良网民们提供了一个绝佳的环境去窃取我们的信息,让我们的信息不再安全.为了应对这些hacker和script boys,我们的白帽们也一直在努力,从没松懈过. 因为我还距白帽的能力有些差距,所以这里就简单介绍一下互联网的加密.解密方式.openssl的基本应用及CA的实现过程. 二.加密方式 1.对称加密加密和解密使用同一密钥:具体使用的算法: DES:通用加密标准,56bits密

加密解密基础及私有CA的实现-2015092801

1. 加密解密简述 2.加密算法 3.加密解密步骤 4.使用openssl自建私有CA 加密解密基础: 由于互联网的数据传输基本上都是明文的(如ftp.http.telnet等),而往往有些数据在互联网传输对于传输方来讲,确实涉及隐私或是一些敏感的内容不想让互联网上其他人看到,因此,引入了加密的机制. 最早起的加密,采用移位的方式对数据进行加密,如数据数"abcd",其对应的在互联网上传输的内容是"efgh".后来的加密方式是采用"密码对照本",

openssl的加密、解密以及构建私有CA

SSL.TLS介绍: SSL:安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密. TLS:安全传输层协议(Transport Layer Security)用于在两个通信应用程序之间提供保密性和数据完整性.该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake).较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体

eos中签名验签流程和eosjs中的加解密原理

关键词:eos 签名 验签 ecc dsa 加密 解密 eosjs aes 本文主要探讨两方面 1.eosjs中用密钥对进行加解密功能 2.eos中密钥对生成,签名和验签过程(私钥签名 公钥验签) 常用的加密算法 对称性加密算法 对称式加密就是加密和解密使用同一个密钥,信息接收双方都需事先知道密匙和加解密算法,之后便是对数据进行加解密了.对称加密算法用来对敏感数据等信息进行加密. 对称性加密算法有:AES.DES.3DES DES(Data EncryptionStandard):数据加密标准,