三个组件:
[root@centos7-4 data]# openssl-libs
[root@centos7-4 data]# rpm -ql nss
[root@centos7-4 data]# rpm -ql openssl
/etc/pki/CA
/etc/pki/CA/certs
/etc/pki/CA/crl
/etc/pki/CA/newcerts
/etc/pki/CA/private
usr/bin/openssl
openssl 命令支持对称加密,非对称加密解密等
用法:1、交互式
[root@centos7-->08:52:30~]#openssl
OpenSSL> ?
openssl:Error: '?' is an invalid command.
2、非交互式
openssl + 命令 命令.....
openssl命令
对称加密:
enc命令:
解密:
加密例子:
第一步:
[root@centos7-->14:47:26/app]#openssl enc -e -des3 -a -salt -in fstab -out fstab.cip
enter des-ede3-cbc encryption password:
Verifying - enter des-ede3-cbc encryption password:
第二步:
[root@centos7-4 data]# base64 -d test.cip
######使用base64 -d fstab.cip 编码转换成二进制####
第三步:
解密
[root@centos7-4 data]# openssl enc -d -des3 -a -salt -in test.cip -out test2
enter des-ede3-cbc decryption password:
openssl命令—哈希算法
单向加密:
dgst命令:
例子:
md5sum test
[root@centos7-4 data]# md5sum test
cf4676656ace92c1d8e1edf2f2ecbf6a test
[root@centos7-4 data]# openssl dgst -md5 test
MD5(test)= cf4676656ace92c1d8e1edf2f2ecbf6a
因为算法一样,所以得出的哈希值也相同
openssl命令
生成用户密码:
生成随机数:
man sslpasswd
例子:
openssl passwd
默认使用: -crypt加密
例子1、
[root@centos7-4 data]# openssl passwd
Password:
Verifying - Password:
NNiotT0rFp20E
例子2、
[root@centos7-4 data]# openssl passwd -1
Password:
Verifying - Password:
$1$NfgvMVBF$g/fovTmTnv5B2OUKJvFr21
例子3、
[root@centos7-4 data]# openssl passwd -1 -salt centos
Password:
$1$centos$Uq6E6Wp5SDZYbs6MCmamP0
生成随机数
例子:openssl rand -base64 12
[root@centos7-4 data]# openssl rand -base64 12
WdOrd0ZhcRlLAnJ+
base64编码机制的诠释
例子:echo "ab" |base64 2^6=64
[root@centos7-4 data]# echo -n "ab" |base64
YWI=
64个字符表示系统中的二进制数
A-Z------十进制---->0—25
a--------z十进制----->97------>1100001
b--------十进制------->98------>1100010
a b
01100001 01100010
a b
011000 01 0110 001000
24Y 22W I
0-9
+(62)
/ (63) 64个字符
[root@centos7-4 data]# echo -n "abc" |base64 > abc.base64
[root@centos7-4 data]# cat abc.base64
YWJj
base64编码本身不加密,可以使用base64 -d 反向解析成源码
[root@centos7-4 data]# base64 -d abc.base64
abc
随机口令多少位:openssl rand -base64 24|tr -d '/+' |head -c12
生成随机口令 :cat /dev/urandom |tr -dc 'A-Za-z0-9' |head -c 12
[root@centos7-4 data]# openssl rand -hex 10
21840dfde41df91375a6
openssl命令 对称加密
openssl命令 对称加密
公钥加密:
数字签名:
密钥交换:
openssl命令 非对称加密
生成密钥对儿: man genrsa
生成私钥
从私钥中提取出公钥
随机数生成器:伪随机数字
[root@centos7-4 data]# cat /dev/random |tr -dc "A-Za-z0-9" |head -c 12
Wwy3w7QwI9hk
[root@centos7-4 data]# cat /dev/urandom |tr -dc "A-Za-z0-9" |head -c 12
AisDjYYIN3z7
例子:生成私钥
1、不加密的私钥
[root@centos7-4 data]# openssl genrsa -out test.key 1024
Generating RSA private key, 1024 bit long modulus
..++++++
........................++++++
e is 65537 (0x10001)
2、使用dns3加密私钥
[root@centos7-4 data]# (umask 066;openssl genrsa -out test2.key -des3 2048)
Generating RSA private key, 2048 bit long modulus
.......................................+++
..............................................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for test2.key:
Verifying - Enter pass phrase for test2.key:
解密私钥
[root@centos7-4 data]# openssl rsa -in test2.key -out test22.key
Enter pass phrase for test2.key:
writing RSA key
[root@centos7-4 data]# ls
test2.key test22.key ###解密后出来的test22私钥文件
从私钥中提取公钥
[root@centos7-4 data]# openssl rsa -in test2.key -pubout -out test2.pub
Enter pass phrase for test2.key:
writing RSA key
[root@centos7-4 data]# ls
test2.key test2.pub ###从私钥中提取出的公钥