PKI即公钥基础设施,包括注册机构(RC),签证机构(CA),证书撤销列表(CRL)发布机构,证书存取库,我们利用openssl来实现以上内容。

一,我们来梳理一下常见的加密算法

1,对称加密算法

常见的对称加密算法有DES,3DES,AES

工作机理:通过移位来达到加密效果

适用场景:机密性

2,非对称加密算法

常见的非对称加密算法有:RSA ,DSS,ECC,DH

工作机理,通过数学函数,结果不可逆推的原理来达到加密效果

适用场景:身份验证,密钥交换,机密性

3,单项加密加密算法

常见的单项加密算法有:MD5,SHA1,SHA2,SHA3,SHA256,SHA512

工作机理:通过散列计算,提取特征码

适用场景:保证数据完整性

二,PKI是什么

为了保证通信双方的安全性,我们通常会利用可信的第三方机构给我们讲发来的证书。第三方是被双方都可信任的机构,想想我们常见到的场景

1,淘宝,我在淘宝上输入密码,怎样才能保证不被Heck所窃取到呢,首先淘宝在著名的第三方机构申请一个数字证书,我们浏览网页的时候,淘宝把数字证书发给我们,我们自己生产一段密钥,然后利用数字证书里的公钥去加密自己产生的秘钥,然后发给淘宝,淘宝利用自己的私钥解密,得到自己的那段密钥,然后淘宝利用发给他的那段密钥加密网页,传给我们,我们就可以看到加密后的网页了,我们利用自己的密钥解密(OK,好起来好麻烦的样子哦,直接来图吧,或许理解的会快一些)

223442162.png

2U key,我们去银行去办理银行卡,办公人员都会我们推荐U key ,这样网购可以方便些,其实Ukey 里面内置了数字证书,就是为了网购的时候,银行验证我们的身份,原理和上面类似,网上银行去获取我们的数字证书看看是不是我们本人。

其实这些都是由PKI来做的,那我们的PKI到底是什么呢?

OK,简单来说PKI就是利用公钥技术建立的提供安全服务的基础设施,上面的淘宝和网银的UKEY就是最好的例证,充分说明了PKI是电子商务的最基础也是最核心的东西之一。

三,利用openssl 建立PKI

1,一些基础的命令

a)实现加密,openssl支持众多加密算法,ok,我们加密一段文字,使用3des

[root@dns1 ~]# openssl enc-des3 -in ~/fstab -e -out ~/fstab.des3

enter des-ede3-cbc encryption password:

Verifying - enter des-ede3-cbcencryption password:

他会要求我们输入密码去加密当前用户家目录下的fstab

们查看加密以后的文件,会发现是一些很无厘头的乱码,实在不知

我们看下怎样解密

[root@dns1 ~]# openssl enc-des3 -in ~/fstab.des3 -d -out ~/fstab.txt

enter des-ede3-cbc decryption password:

输入密码就可以解密了

b)提取特征码

特征码有诸多用处,定长而且具有雪崩效应,所以一般被用来验证省份,OK,我们提取家目录下的fstab的特征码

[root@dns1 ~]# openssl dgst-md5 -hex ~/fstab

MD5(/root/fstab)=f907200d3f3df47c03ac1ebf2780c7ee

利用MD5技术提取特征码,后面的-hex 表示利用16进制表示

c)产生非对称的私钥

首先我们要说明的是,非对称的私钥别人是不能有读取权限的

[root@dns1 ~]# (umask077;openssl genrsa -out ~/mykey.pri 2048)

Generating RSA private key,2048 bit long modulus

.............................................................+++

................................................................+++

e is 65537 (0x10001)

提取其中的公钥

[root@dns1 ~]# openssl rsa -in~/mykey.pri -pubout

2,自建PKI

CAPKI重要的组成部分之一,CA要给别人发证书,当然也要自己也的有证书,CA的证书要不来自根CA给他的,要不就是自己给自己颁发。

我们来看看怎样给自己颁发

我们进入/etca/pki/CA/

223505368.png

上面最重要的内容是Common Name,网站的话,写你网站的域名,不然,呵呵,浏览器不让你访问不怪我啊,这样我们就生成了申请文件。

自签名,我们知道PKI是需要有一个库,这个库可以实现证书的存取。

我们来建立

[root@dns1 CA]# touch index.txt

[root@dns1 CA]# echo 01 > serial

我们新建一个申请

openssl req -new -key/root/mykey.pri -out /root/web.csr

利用私钥到处申请文件

openssl ca -in/root/web.csr -out private/web.crt -days 365

申请证书。

接下来问你是不是证书有效期为365 

接下来问还要不要处理其他请求。