密码算法
对称加密:加密和解密方都是用同一个密码。
公钥加密:非对称加密,加密和解密使用的是不同的密钥,公钥和私钥是成对出现的,公钥是从私钥中提取出来的,公钥加密要用私钥解密,私钥加密要用公钥解密。
单向加密:数据完整性算法,用来抽取数据的特征码,二次抽取和一次抽取的特征码进行比较,用来验证数据是否被修改过。
认证协议:验证通信方的真实性。
数据加密分析
A1:A的公钥 B1:B的公钥
A2:A的私钥 B2:B的私钥
加密过程:
1.对于要发送的数据,会先用单向加密对数据提取出特征码。
2.用A2对特征码加密,放在数据后面。
3.对称加密会经过特殊的算法对数据和特征码进行整体加密,形成一个密钥。
4.用B1对经过对称算法生成的密钥进行加密并放在整体的后面。
解密的过程:
1.对发送过来的数据,B会先用B2对数据进行解密,这里就可以看出是公钥加密,私钥解密了,如果能解密,则表示这个数据是B的,所以,就算有人窃取到这个数据包,他没有B2,就解密不了,他就无法查看。
2.经过B2解密后,拿出的是经过对称加密的密钥,就可以对这个数据包进行解密。这里就可以看出对称加密就是用相同的密钥来进行加密解密的。
3.解密出来后,B会拿A1来解密,如果能解密,B就会知道这个数据包一定是A发来的。这里表现出的是私钥加密,公钥解密的特性,它的用途就是用来进行身份验证的。
4.解密后,B会对数据进行单向加密算法生成出一个特征码,拿这个特征码和从A发过来的特征码进行比较,如果一样,则表示这个数据没有被篡改过,如果不一样,则表示数据被人篡改,数据不会被信任。
现在问题出来了,那么B怎么获得对方可靠的公钥并且这个公钥还是真实的?这就得说说ca了。
Ca证书
CA是证书的签发机构,它是PKI的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
在A和B 通信之前,A会去问CA:“给我发个证,证明我是合法的”,A会向CA发出申请,这个申请表上会有A的信息,例如:国家,省份,城市,名字,域名,自己的公钥等,CA看了之后,签个字,用单向加密算法提取特征码,用自己的私钥加密,发给A,然后A拿着证书让B看,会说:“你看我有证,我是合法的”,但是这是B不知道这个证书的真假,这时,它会拿着CA的公钥对它解密,解开了,证明的确是CA颁发的证书,在经过单向加密算法对证书提取特征码并与之比较,一样,则证明证书完整,这样B就相信A了。
openssl建立CA服务器
1.生成密钥,自己配置先生成一对密钥(公钥和私钥)
#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
在当前shell中用()执行命令表示括号中的命令要在子shell中执行,2048表示密钥的长度、-out后面表示生成密钥文件保存的路径,生也的文件权限是666、而这个文件不能被别人访问、所在666-077就得到权限600。图为查看私钥文件显示的结果
2.自签证书,既然定义自己为CA服务器,自己要给自己颁发一个证书,确立威信。
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
req: 生成证书签署请求
-news: 新请求
-key /path/to/keyfile: 指定私钥文件
-out /path/to/somefile: 证书存放的位置
-x509: 生成自签署证书
-days n: 有效天数
#touch /etc/pki/CA/serial 给客户发证编号存放的文件
#touch /etc/pki/CA/index.txt 缩影文件数据库,签署给别人的证书,这里就会有一个缩影
#echo 01 > /etc/pki/CA/serial 给这个文件指定从哪开始
客户端配置节点生成请求
1.生成密钥对儿
#mkdir /etc/httpd/ssl
# (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 /etc/httpd/ssl/httpd.csr 192.168.0.2:/etc/pki/CA/
CA服务器签署证书
1.验正证书中的信息
2.签署证书
# openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/httpd.crt -days 365
3.发送给请求者;
#scp httpd.crt 192.168.0.20:/etc/httpd/ssl/
吊销证书
1.获取证书序列号
2.根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致
3.若果检查结果一致,那么就可以吊销证书了
4.生成吊销证书的编号(如果是第一次吊销)
#touch /etc/pki/CA/crlnumber
# echo 00 > /etc/pki/CA/crlnumber
5.更新证书吊销列表
# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out httpd.crl
验证CA证书
把客户端生成的httpd.crl证书提取到本机上
尝试安装httpd.crl
安装证书
点击下一步
到此,CA就安装成功了。