加密和解密使用同一个秘钥
| 常见算法:
非对称加密:密钥是成对出现
公钥:公钥加密
私钥:解密
| 功能:
| 常见算法:
哈希算法:将任意数据压缩固定大小的摘要
特征:
功能:保证数据的完整性
常见算法:MD5:128bits、sha1:160bits、sha224、sha256、sha384、sha512
常用工具:
RPM文件完整性:
rpm --verify package_name(or -V)
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
rpm --checksig package_file_name (or -K)
man-in-the-middle。简称中间人
PKI:public key infrastructure 公共密钥加密体系
签证机构:CA (certificate authority)
注册机构:RA
证书吊销列表:CRL
证书存取库:
X.509:定义证书的结构以及认证协议标准
证书类型:
获取证书两种方式:
SSL:security socket layer 安全套接字层 TLS:transport layer security 传输层安全协议
功能:
实现分为握手阶段和应用阶段
握手阶段:也是协商阶段,客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过mastersecret生成
应用阶段:在握手阶段完成后进入,在应用阶段通信双发使用握手阶段协商好的密钥进行安全通信。
HTTPS协议:是http协议和SSL/TLS协议的组合。对http协议的文本数据进行加密处理后,成为二进制形式传输。
HTTP和SSL/TLS协议都属于应用层的协议(TCP/IP 协议四层)
openssl 时一套自有的加密工具,开放源代码的软件,应用程序可以使用这个软件进行安全通信,避免窃听,同时确认一端连线者的身份,以c语言写成,实现了基本的加密功能,实现了SSL和TLS协议。
包含的三个组件:
Base64 是一种基于64个可打印字符来表示二进制数据的方法。
base64的编码过程:
将所有字符转化为ASCII码,将ASCII码转化为8位二进制,将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;统一在6位二进制前补两个0凑足8位;将补0后的二进制转为十进制;从Base64编码表获取十进制对应的Base64编码;
echo -n Man | base64
echo TWFu |base64 -d
两种运行模式:
三种命令:
工具:openssl enc
# vim testfile
# 加密
# openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
# rm -rf testfile
# 解密
# openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
enter des-ede3-cbc decryption password:
工具:openssl dgst
# openssl md5 testfile
MD5(testfile)= 0eb5084481fdd6b1f762e728cf0616c7
# openssl sha512 testfile
SHA512(testfile)= c8bcfe2fb684b09a57c6367b631a766940c3d60e6d2d22b70a7520bafd1e1103e827d69b612b31888d8803aba898779048efc291db3cfe88fd0a017dac31d025
# sha512sum testfile
c8bcfe2fb684b09a57c6367b631a766940c3d60e6d2d22b70a7520bafd1e1103e827d69b612b31888d8803aba898779048efc291db3cfe88fd0a017dac31d025 testfile
创建新用户同时指定密码,在 CentOS 和 Ubuntu 都通用
[root@centos8 ~]# getent shadow coleuser1
coleuser1:$6$XeFm4k9jwpPJTeXa$sBMNZSG1Z9a8PXov7m0fdhLXX8AFogCPs6nb0eRTYwRmVl5sTwf5op/zevlqVRInS.U2IkPVWaZYQKUEW4b4P/:18718:0:99999:7:::
[root@centos8 ~]# useradd -p `echo password | openssl passwd -6 -salt XeFm4k9jwpPJTeXa -stdin` coleuser2
[root@centos8 ~]# getent shadow coleuser1 coleuser2
coleuser1:$6$XeFm4k9jwpPJTeXa$sBMNZSG1Z9a8PXov7m0fdhLXX8AFogCPs6nb0eRTYwRmVl5sTwf5op/zevlqVRInS.U2IkPVWaZYQKUEW4b4P/:18718:0:99999:7:::
coleuser2:$6$XeFm4k9jwpPJTeXa$sBMNZSG1Z9a8PXov7m0fdhLXX8AFogCPs6nb0eRTYwRmVl5sTwf5op/zevlqVRInS.U2IkPVWaZYQKUEW4b4P/:18718:0:99999:7:::
# openssl rand -base64 9 |head -c10
HUap2bpMbt
# tr -dc '[:alnum:]' < /dev/urandom |head -c10
ZhQXzVZhks
# 生成对称秘钥加密的私钥,通过设置严格的权限实现安全,应用更广泛
(umask 077; openssl genrsa -out app.key 2048)
cat /data/app.key
# 将加密对称秘钥key解密,此方式更安全,但是不方便
openssl genrsa -out app2.key -des3 2048
# 从私钥中提取出公钥
openssl rsa -in app.key -pubout -out app.key.pub
证书申请及签署步骤: 1、生成证书申请请求;2、RA核验;3、CA签署;4、获取证书
OpenSSL 的配置文件:/etc/pki/tls/openssl.cnf
三种策略:match匹配、optional可选、supplied提供
match:要求申请填写的信息跟CA设置信息必须一致
optional:可有可无,跟CA设置信息可不一致
supplied:必须填写这项申请信息
1、创建私有CA
# 生成证书索引数据库文件
touch /etc/pki/CA/index.txt
# 指定第一个颁发证书的序列号
echo 01 > /etc/pki/CA/serial
# 生成CA私钥
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048)
# 生成CA自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
2、申请证书并颁发证书
# 为需要使用证书的主机生成生成私钥
(umask 066; openssl genrsa -out /data/test.key 2048)
# 为需要使用证书的主机生成证书申请文件
openssl req -new -key /data/test.key -out /data/test.csr
# 在CA签署证书并将证书颁发给请求者
openssl ca -in /data/test.csr -out /etc/pki/CA/certs/test.crt -days 100
注意:默认要求 国家,省,公司名称三项必须和CA一致
# 查看证书中的信息
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
# 查看指定编号的证书状态
openssl ca -status SERIAL
3、吊销证书
# 在客户端获取要吊销的证书的serial
openssl x509 -in /etc/pki/CA/certs/test.crt -noout -serial -subject
# 在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,吊销证书
openssl ca -revoke /etc/pki/CA/newcerts/<SERIAL>.pem
# 指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行
echo 01 > /etc/pki/CA/crlnumber
# 更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl.pem
# 查看crl文件
openssl crl -in /etc/pki/CA/crl.pem -noout -text