linux CA 加解密安全过程讲解

一、基础知识

对称加密:

加密和解密方使用同一个密钥,用来解决数据机密性,但是密钥通过何种方式传递给对方不容易实现;

公钥加密:

密钥是成对出现的,分别为Secret key(密钥)和Public key(公钥)公钥加密必须使用与其相对应的私钥进行解密并且公钥是从私钥中提取出来的,有私钥可以知道公钥是什么,但是知道公钥是不能知道私钥的,公钥是公开的,而私钥是不公开的,但是公钥加密比对称加密慢3个数量级(1000倍),加密速度相当的慢,所以单独用此加密方式也比较困难;公钥加密功能:

单向加密:

不是真正来实现加密,而是用来提取数据特征码,验证数据完整性,他有雪崩效应((蝴蝶效应):源数据有一点点不同,结果大不相同)和定长输出(通过单相加密后的结果长度一样)的特征;

单向加密常见算法:

md5:Message Degist,由麻省理工学院人工智能实验室研发,固定定长输出

128bit;

md5sum:计算文件md5格式的特征值;

sha1:Secure Hash Algorithm 1,固定定长输出160bit;

SHA256:长度越长变化越大;

SHA512: 长度越长变化越大;

二、加密过程:

1、发送方用单向加密算法计算数据的特征码;

2、发送方用自己的私钥加密这段特征码,并加在数据尾部;

3、发送方生成一个对称密钥;

4、发送方用此对称密钥加密数据和加密后特征码;

5、发送方用接收方的公钥加密这个对称密钥,附加在密文的尾部,并发送之;

解密过程:

1、接收方用自己的私钥解密加密过的对称密码;

2、接收方用密码解密密文;

3、接收方用发送方的公钥解密发送方私钥加密的特征码;

4、接收方用同样的单向加密算法计算出原始数据的特征码;

5、接收方比较两段特征码;

发送方: 计算数据特征值----> 使用私钥加密特征值 ---> 随机生成密码对称加密整个数据 ---> 使用接受方公钥加密密码  
接收方: 使用私钥解密密码 ----> 解密整个数据 ----> 使用公钥验证身份 ----> 比较数据特征值

三、CA证书的作用

Ca 证书模型

1、密钥交换密钥交换,也称为IKE:Internet Key Exchange 互联网密钥交换;

2、数字签名,用于身份验证,防抵赖;

我们发现上述加密方式中严重依赖对方的公钥,而怎样才能确定是对方的公钥呢,所以这就需要有一个专门机构来确保公钥来源的合法性并给予对方一个数字证书,其实数字证书就像我们自己的***一样,而那个专门机构就像是给我们颁发***的公安机关一样,下面来说一下

数字证书和CA(证书颁发机构);

数字证书(Digital Certificate)包含证书拥有者信息及公钥还有CA的签名并且附加CRL(证书吊销列表);

CA(证书颁发机构):对证书利用单向加密的算法提取证书数据的特征码,然后用自己的私钥加密特征码并附加在数据的尾部发送之;CA分为公共CA和私有CA两类

PKI:

Public Key Infrastructure 是实现现代互联网电子商务的核心框架,只是一种规范,其核心就是CA,还有密钥验证和密码交换机制,保证验证过程是可靠的。

ssl(Secure Socket Layer)安全套接字层;

四、linux加解密技术

在pcp5层模型中的AL(应用层)和TL(传输层)中间增加了半层就是ssl,其实ssl只是一种协议,需要靠其它软件来现,这种软件在linux中最通用和流行的就是openssl,目前openssl软件版本

有一下几种:

sslv1 已经废弃;

sslv2 目前再用;

sslv3 目前再用;

TLS:

Transport Layer security(传输层安全)协议,最常用的是tlsv1版本(与 sslv3同时代);

linux上常用的加解密的工具有两个:

1、gpg 实现rpm包签名比较常用;

2、openssl ssl的开源版本的实现,一共有一下三个组件组成:

1)libcrypto 通用库;

2)libssl 实现ssl和tls协议的;

3)openssl 多用途的加密组件;

这里我们重点讲解openssl:

openssl 是多用途的加密组件,命令行工具,其可以实现对称加密算法、非对称加密算法、单向加密算法、作为一个简单的CA (OpenCA),其依赖的配置文件默认在/etc/pki/tls/openssl.cnf中,也可以自己定义;openssl作为简单的CA其颁发的证书格式有x509(比较通用,定义了证书的格式,类似于pkcs#10),pkcs#12和pkcs#17定义了如何将证书存诸的格式;openssl也可以实现证书格式的转换。

openssl的常用工具:

1.数据的保密性  
信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密匙来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密匙要用一个安全的方法传送。加密过的数据可以公开地传送。

2.数据的一致性  
加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。

3.安全验证  
加密的另外一个用途是用来作为个人的标识,用户的密匙可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。

五、实验

openssl建立私有CA:

1、生成密钥

2、自签署证书

节点:

1、生成密钥对儿

2、生成证书签署请求

3、把请求发送给CA

CA:

1、验正请求者信息;

2、签署证书;

3、把签好的证书发送给请求者;

一、建立CA服务器:

1、生成密钥

# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2、自签证书

req: 生成证书签署请求

-news: 新请求

-key /path/to/keyfile: 指定私钥文件

-out /path/to/somefile:

-x509: 生成自签署证书

-days n: 有效天数

3、初始化工作环境

# touch /etc/pki/CA/{index.txt,serial}

# echo 01 > /etc/pki/CA/serial

二、节点申请证书:

(一) 节点生成请求

1、生成密钥对儿

# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

2、生成证书签署请求

# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

3、把签署请求文件发送给CA服务

# scp

(二) CA签署证书

1、验正证书中的信息;

2、签署证书

# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N

3、发送给请求者;

三、吊销证书

(一)节点

1、获取证书serial

# openssl x509 -in /path/to/certificate_file.crt -noout -serial -subject

(二) CA

2、根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致;

3、吊销证书

# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

4、生成吊销证书的编号(如果是第一次吊销)

# echo 00 > /etc/pki/CA/crlnumber

5、更新证书吊销列表

# cd /etc/pki/CA/crl/

# openssl ca -gencrl -out thisca.crl

如果需要,查看crl文件的内容:

# openssl crl -in /path/to/crlfile.crl -noout -text

linux CA 加解密安全过程讲解,布布扣,bubuko.com

时间: 08-02

linux CA 加解密安全过程讲解的相关文章

DES加解密算法的简单实现

前几天刚写完一个简单的DES算法的实验,拿来作为第一次发到博客的随笔,填充一下空空如也的博客,献丑了 因为主要目的是Easy-To-Understand,再现一个直观的DES加解密的过程,所以很浪费地每一个数据位都用一个short整型存储,用来理ying解fu过zuo程ye就好(虽说DES这种对称加密算法十多年前就已经被淘汰了,现在一般建议用AES或者DES3 “1973 年,美国国家标准局(NBS)开始征集一种标准的数据加密标准算法(DES),以用于非机密性政府机构.商业部门和民间的对非机密的

互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点

http://www.cnblogs.com/charlesblc/p/6341265.html 其中的一篇. 参考 https://zhuanlan.zhihu.com/p/20336461?refer=auxten 网络编程(四):互联网中TCP Socket服务器的实现过程需要考虑哪些安全问题? 在Internet环境下,安全问题我主要分为如下几类: 信息传输过程中被黑客窃取 服务器自身的安全 服务端数据的安全 首先,如果能用https,就尽量用https,能用nginx等常见服务器,就用

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

简单罗列基础命令,只分享我的想法! 一.数据加/解密原理说明 客户端双方在互联网上通信,为了保证信息的安全,有了SSL协议,就是在TCP/IP模型传输层之上应用层之下,叫做安全的套接字层.目的就是为了把应用层的数据进行加密传递给客户端,而在Linux上实现这个协议或这个功能的软件就是OpenSSL. 原理其实就是,双方客户端的SSL层进行协商应用哪种加/解密的方式,ok,如果双方SSL达成一致,上层应用协议又通过SSL进行加密的话,那么双方在互联网上传输的数据就是加密的,这个加密之后的数据到达客

linux关于加密解密技术基础、KPI及创建私有CA

linux加密和解密技术基础.KPI及创建私有CA 一.加密方式分为:1.对称加密:加密和解密使用同一个密钥:      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES. 3DES.TDEA.AES.    Blowfish.Twofish          IDE.ARC6.CAST5等.    特性:      1.加密.解密使用同一个密钥:      2.强原始数据分割成固定大小的块,逐个进行加密

ECC加解密过程(转)

ECC加解密过程: 不是所有的椭圆曲线都可以用来加密.Y^2=x^3+ax+b是一类可以用来加密的椭圆曲线,也是最为简单的一类. 考虑等式: K=kG  [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数] 不难发现,给定k和G,根据加法法则,计算K很容易:但给定K和G,求k就相对困难了. 这就是椭圆曲线加密算法采用的难题.我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key). 现

Linux之加密解密基础技术

下文主要介绍了什么是加密解密:为何要用到加密解密技术:加密解密技术能够为我们带来什么样的好处:常见的几种加密解密技术介绍以及Linux中的openssl. 一.什么是加密,解密 加密技术是一种常用的安全保密手段,利用各种技术手段把重要的数据进行加密传送:再用对应的技术手段进行解封,该过程的逆过程就称为解密.这里用一个不太恰当的例子说一下:也就好比你去办一张银行卡,需要你设置一个密码,就可以理解成在为这张银行卡做一个加密的操作:用银行卡到提款机取钱需要你输入密码,这就是一个解密的操作. 二.为什么

openssl 加解密学习笔记

首先最近接到一个项目,这个项目中需要用到RSA的加密解密,因为之前没有接触过,在网上找了些资料,然后自己测试后发现其实使用openssl来进行加解密挺简单的,但是网上百度出来的很多又是一样的,有时候帮助不是很大,所以才想要写下来自己在搞整个加密过程遇到的一些问题,方便自己以后回头查看,也可能会帮到遇到同样的童鞋. 废话不多说,我接到的这个项目呢,有几个地方是需要用到RSA的加解密.1.使用.pfx格式的私钥签名.2.使用.cer的公钥文件进行加密操作.3.使用给定的指数与模进行公钥加密.下面有些

解决Linux下AES解密失败

前段时间,用了个AES加密解密的方法,详见上篇博客AES加密解密.加解密方法在window上测试的时候没有出现任何问题,将加密过程放在安卓上,解密发布到Linux服务器的时候,安卓将加密的结果传到Linux上解密的时候却总是失败,让用户不能成功登录,经过检查,测试后,发现AES在Linux上解密失败,出现错误: javax.crypto.BadPaddingException: Given final block not properly padded 现在来回顾下自己的解决思路: 加密过程是在

C#微信公众号开发系列教程三(消息体签名及加解密)

  C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)    距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班.第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太忙,样稿一直没有给他,感觉挺愧疚了.真心希望能帮一下迷茫的