本文共 2876 字,大约阅读时间需要 9 分钟。
对称加密算法就是使用一把钥匙进行加密解密的算法,加密时用这把钥匙加密,解密时用这把钥匙解密,其最大的优势在于加密解密速度快,其特点在于将原始数据分成固定大小的块,逐个进行加密。而其缺点就很明显,秘钥分发的过多,如果要发给1000个人就需要给这1000个人秘钥,而且秘钥的传输并不安全,任何人只要截获秘钥就可以随意修改数据,当我们收到一个数据时,不能保证该数据的来源的可靠性,其可能篡改过。
我们经常使用的对称加密算法主要有DES算法,3DES,AES等算法。非对称加密算法就是加密解密使用的不是同一把钥匙,使用公私钥加密,公钥对外公开,任何人只要想拥有,都可以给他,私钥只有自己持有。公私钥加密解密的规则是公钥加密的数据只有私钥才能解开,私钥加密的数据只有公钥才能解开,我们可以用下面的图来解释公私钥加密过程。
使用非对称加密算法虽然解决了秘钥传递的隐患,数据也是被加密安全的,但是存在这样一个问题,就是A收到的来自B的数据,但是这个B并不是真正的B,而是C冒充的,因为C也有A的公钥,C虽然没有A的私钥,不能解开B发个A的数据,但是他能够截获该数据,并冒充B,使用A的公钥加密令一个数据发给A,A并不能感觉到数据的来源不对,依然相信C就是自己想要的B,这样是不安全的,解决的办法就是使用数字签名。
1.单向散列hash函数单向散列的目的是对一段数据生成固定大小的指纹,我们称其为消息摘要,这个过程是不可逆的,不能消息摘要反推回数据。其特点是任意长度输入,固定长度输出,如果修改原始数据,则生成的消息摘要也会发生改变,常用的算法是MD5,例如md5sum hello.txt
执行结果如下:
touch index.txtecho 00>>serial
进入CA主目录,使用下面的命令生成私钥,-out 指定路径,必须要与配置文件相同,私钥密码随意,这里设置为centos:
(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
执行结果如下:
touch index.txtecho 00>>serial
然后生成子CA的私钥:
(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)
执行结果如下:
openssl req -new -key private/cakey.pem -out subca.csr
执行结果如下:
scp subca.csr root@172.18.250.11:/etc/pki/CA
然后根CA对子CA的公钥进行签名,命令如下:
openssl ca -in subca.csr -out certs/subca.crt -days 3650
scp certs/subca.crt root@172.18.250.22:/etc/pki/CA/cacert.pem
3.部署服务器
服务器首先要有自己的公私钥,用下面的命令生成自己的私钥:(umask 066;openssl genrsa -out server.key 1024)
执行结果如下:
openssl req -new -key rhel5.key -out server.csr
结果如下:
scp server.csr root@172.18.250.22:/etc/pki/CA
子CA对公钥签名,生成证书,命令如下:
openssl ca -in server.csr -out certs/server.crt -days 365
执行结果如下:
scp server.crt root@172.18.252.155:/app
这样服务器就有了证书。
4.数字签名可以参考下图:转载于:https://blog.51cto.com/13412442/2171654