加密的算法和协议:
对称加密:加密和解密同一个密钥,依赖于算法和密钥。
算法:des,3des,aes,blowfish,idea,rc6,cast5
特性:
1,加密,解密使用同一密钥;
2,讲明问分割成固定大小的块,逐一进行加密;
缺陷:
1,密钥过多;
2,密钥分发;
非对称加密:公钥加密
密钥对儿:私钥和公钥
公钥是从私钥中提取出来的,使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密, 反之亦然。
算法:Rsa,Dea,Elagmal
特性:
- 钥匙长度较大。
- 加密解密分别使用密钥对儿中的密钥进行。
- 常用于数据签名和密钥交换。
单向加密:提出数据的特征码
特征:
- 定长输出。
- 雪崩效应。
- 不可逆。
算法:md5,sha1,sha256,sha384,sha512
Pki:Public Key Infrastructure 由四部分组成
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库
OpenSsl的组成部分
Libcrypto:加密,解密库文件;
Libssl:ssl协议实现
Openssl:多用途命令行工具。每种功能都使用专用的子命令来实现。
Openssl子命令分类:
标准命令
消息摘要命令
加密,解密相关命令
Openssl加密解密:
对称加密:(加密文件)
工具:openssl enc ,gpg
算法:des,3des,aes,blowfish,twofish,idea,cast5
enc工具:
#openssl enc -e -加密类型 -a -salt in /oldfile -out /newfile
#openssl enc -d -加密类型 -a -salt in /newfile -out /oldfile
加密文件:# openssl enc -e -des3 -a -salt -in test -out test.1
enter des-ede3-cbc encryption password:
Verifying – enter des-ede3-cbc encryption password:
解密文件:# openssl enc -d -des3 -a -salt -in test.1 -out test.2
单向加密:dgst
算法:md5,sha1
工具:openssl dgst,md5sum,sha1sum,sha256,sha224sum,sha348sum
#man dgst
#openssl gdst -md5 file..
#md5sum fstab.new
# openssl dgst -md5 test1
MD5(test1)= d41d8cd98f00b204e9800998ecf8427e
# md5sum test1
d41d8cd98f00b204e9800998ecf8427e test1
生成用户密码:passwd
#openssl passwd -1 -salt 8bits随机数
# openssl passwd -1 -salt 8
Password:
$1$8$nQ0Ea2HVPqTv.j9k/i.SP1
生成随机数:rand
#openssl rand -hex | base64 num
[hex:16进制|base64 :任意字符]
# openssl rand -hex 8
a6c957bd6e37ec55
# openssl rand -base64 8
PY4eGLDY+RU=
公钥加密:工具,gpg,openssl rsautl
Genrsa 生成。
Whatis genrsa
生成密钥对:
操作过程,生成私钥,从私钥中提取公钥。
openssl genrsa -out test.key 2048
(umask 077;openssl genrsa -out testkey 2048)
#在bash中命令在小括号里执行的是通过打开一个子shell进程进行的。
以上两条命令的区别在与最后的权限
# ls -ll
总用量 8
-rw——-. 1 root root 1675 4月 21 19:58 test2.key
-rw-r–r–. 1 root root 1675 4月 21 19:58 test.key
从私钥中提取公钥:
# openssl rsa -in test2.key -pubout
writing RSA key
—–BEGIN PUBLIC KEY—–
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5mnpGK3HlENliGdgwknF
mOqV1q/3rY0vAHxp9hch4EZ/XY7U1OlBK0Z/UfEU8BM8xJHday/3BUJxiaMzqbJ0
SsHS9QrGYcamwRQihkI8NWtmSPbmd4ptg5WoCExgQwdTsIfIJd+YN0Wab/4fbf4c
RYL66Yp8vld6W1QsgZ0p+xNXK78T3higfienolWTnS2n4bmH7R8kPW1q/xsg2uT1
dh7ooOBs4HYknkSQq1YceKIEp9NMPZNtNJVS7hNniXHCLKbIIjQM2eAlzXGI0XcN
l6xLCq+Z4sxygMfhUnkt8gKAmKVBUTif2uoLdy4fw9MDf63y9iWePylerLNMUmg3
XQIDAQAB
—–END PUBLIC KEY—–
Openssl建立私有CA:
1、生成私钥;
2、生成自签署证书;
(1) 私钥用于签发证书时,向证书添加数字签名使用;
(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;
配置文件路径/etc/pki/tls/openssl.cnf
工作目录:/etc/pki/CA/
certs证书 crl 吊销列表 newcerts新证书 private 私钥位置
建立私有CA
1,生成私钥文件
#(umask 077; openssl genrsa -out /etc/pki/CA/private/sicakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
…………………+++
………………………………………………..+++
2,生成自签证书
#openssl req -new -x509 -key /etc/pki/CA/private/sicakey.pam -out /etc/pki/CA/cacert.pem -days 80
-new: 生成新的证书签署请求;
-key:私钥文件路径,用于提取公钥;
-days N: 证书有效时长,单位为“天”;
-out:输出文件保存位置;
-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;
If you enter '.', the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HN
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:GO
Organizational Unit Name (eg, section) []:LL
Common Name (eg, your name or your server's hostname) []:EDU
Email Address []:[email protected]
3,提供辅助文件
# touch /etc/pki/CA/index.txt
# echo 01 > /etc/pki/CA/serial
给节点发证书:
1,节点申请证书
在证书申请的主机上进行如下步骤:
- 生成私钥;
#(umask 077; openssl genrsa -out ssl.key 1024)
Generating RSA private key, 1024 bit long modulus
…………….++++++
e is 65537 (0x10001)
- 生成证书签署请求;
#openssl req -new -key ssl.key -out ssl.csr (crs结尾,跟主CA的信息一致)
If you enter '.', the field will be left blank.
—–
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HN
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:GO
Organizational Unit Name (eg, section) []:LL
Common Name (eg, your name or your server's hostname) []:EDU
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
注意:a,其中subject信息部分,要与Ca保持一致;
B,common name要是用此主机在通信真实使用的名字;
- 把请求发给CA;
申请完毕之后,发送给CA服务器。审核,测试因为在同一服务器,所以不用发。
2,CA签发证书
- 验证请求者信息
- 签署证书
#openssl ca -in /ssl/ssl.csr -out /ssl/ssl.crt -days 180
crt 签署之后的证书后缀,-days 签发时间
(3)把签署好的证书发给请求者。