今天我们来说一说openssl,那到底什么是openssl呢?
OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广
OpenSSL由三部分组成:libencrypto库,libssl库,openssl多用途命令行工具
接着我们说一下加密算法和协议:
1,对称加密:加密和解密使用同一个密钥;
特性:
(1)、加密、解密使用同一个密钥;
(2)、将原始数据分割成为固定大小的块,逐个进行加密;
缺陷:
(1)、密钥过多;
(2)、密钥分发困难;
数据加密
算法:RSA, DSA, ELGamal
DSS: Digital Signature Standard
DSA:Digital Signature Algorithm
3,单向加密:即提出数据指纹;只能加密,不能解密;
特性:定长输出、雪崩效应;
功能:完整性;
算法:
md5:Message Digest 5, 128bits
sha1:Secure Hash Algorithm 1, 160bits
sha224, sha256, sha384, sha512
4,密钥交换
公钥加密:通过获取对方的公钥对数据进行加密,只有对方的私钥才能解密
DH算法(Deffie-Hellman):由两个人名组成
然后我们说一下加密解密过程:
加密过程:
第一步:发信者先用单向加密的算法计算出数据的特征码,然后用自己的私钥加密特征码,并将其结果附加在数据后面,
第二步:然后生成一个临时的对称密钥,并使用这段对称密钥加密这整段数据,
第三步:然后使用收信者的公钥加密这临时的对称密钥,并附加在这段数据后面,然后发送给收信者
解密过程:
第一步:收信者收到数据后,先用自己的私钥解密这段数据,得到对称加密的密钥后,解密其对称加密的数据,
第二步:然后用发信者的公钥解密这段特征码,能解密的话,发信者的身份得到认证
第三步:收信者再用同样的单向加密的计算方法计算这段数据,并与解密出来特征码进行比较,如果特征码相同,则数据完整性得到认证
各加密算法管理命令
openssl:默认在Centos 7上面默认安装,可以直接使用,有很多子命令可以分别管理。
子命令分为三类:
标准命令
信息摘要命令(dgst命令)
加密命令(enc子命令)
标准命令:enc,ca,req,genrsa等等
对称加密:
工具:openssl enc, gpg
支持的算法:3des, aes, blowfish, towfish
enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -out fstab -in fstab.ciphertext
单向加密:
工具:openssl dgst, md5sum, sha1sum, sha224sum,sha512sum ...
dgst命令:
~]# openssl dgst -md5 /PATH/TO/SOMEFILE (md5sum /PATH/TO/SOMEFILE)
生成用户密码:
工具:passwd, openssl passwd
openssl passwd -1 -salt SALT
生成随机数:
工具:openssl rand
~]# openssl rand -hex NUM
~]# openssl rand -base NUM
生成私钥:~]# (umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS(2的次方))
~]# (umask 077; openssl genrsa -out /tmp/hello.txt 1024)
提出公钥: ~]# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
~]# openssl rsa -in /tmp/hello.txt -pubout
PKI及创建私有CA
PKI:公钥基础设施(Public Key Infrastructure)
签证机构:CA
注册机构:RA
证书吊销列表:CRL
整数存取库
openssl命令:
配置文件:/etc/pki/tls/openssl.cnf
构建私有CA:
在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;
步骤:
(1) 生成私钥;
~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
(2) 生成自签证书;
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有CA时;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是day;
(3) 为CA提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
(1) 用到证书的主机生成私钥;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out httpd.key 2048)
(2) 生成证书签署请求
]# openssl req -new -key httpd.key -out httpd.csr -days 365
(3) 将请求通过可靠方式发送给CA主机;
scp certs/httpd.csr root@172.18.253.227:/tmp
(4) 在CA主机上签署证书;
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
(5) 签署完证书以后发给服务器主机
~]# scp /etc/pki/CA/certs/httpd.crt root@172.18.251.235:/etc/httpd/ssl/httpd.crt
查看证书中的信息:
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
吊销证书:
步骤:
(1) 客户端获取要吊销的证书的serial(在使用证书的主机执行):
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
(2) CA主机吊销证书
先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
吊销:# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
本文出自 “11295442” 博客,请务必保留此出处http://11305442.blog.51cto.com/11295442/1768566
原文地址:http://11305442.blog.51cto.com/11295442/1768566