一.openssl
openssl 由3部分组成:
openssl: 多用途的命令行工具
libcrypto: 加密算法库
libssl:加密模块应用库,实现了ssl及tls
openssl子命令:
1. 对称加密工具:enc,gpg
常用算法: 3des,aes,blowfish,twofish
openssl enc:
加密: openssl enc -e -des3 -a-salt -in anaconda-ks.cfg -out anaconda-ks.cfg.des3
查看加密后的文件是乱码
解密:openssl enc -d -des3 -a-salt -in anaconda-ks.cfg.des3 -out anaconda-ks.cfg
2.单向加密
单向加密工具::md5sum, sha1sum,sha224sum,sha256sum…
openssldgst
算法: md5, sha1
openssldgst-md5 [-hex默认]/PATH/SOMEFILE
openssldgst-md5 testfile
md5sum /PATH/TO/SOMEFILE
如: openssl dgst -md5 f1
3. 生成用户密码:
passwd命令:man sslpasswd
openssl passwd-1 -salt SALT(最多8位)
openssl passwd-1 –salt centos
4.生成随机数: man sslrand
openssl rand -hex|-base64 num
num:表示字节数,-hex:每个字节4位,出现的字符数为num*2
5.公钥加密
算法: RSA,ELGamal,DSA
工具: gpg,openssl rsautl
密钥交换:
公钥加密,DH
生成密钥对:
openssl genrsa-out/PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa -outkey –des 1024) 注意:-des 为加密
从私钥中提取公钥:
openssl rsa -in PRIVATEKEYFILE –pubout –outPUBLICKEYFILE
二. 创建CA和申请证书
2.1 创建私有CA:
1. 生成私钥
2. 生成自签署证书
(1)私钥用于签发证书时,向证书添加数字签名使用
(2)证书:每个通信方都导入此证书至"受信任的证书颁发机构"
openssl的配置文件:/etc/pki/tls/openssl.cnf
工作目录: /etc/pki/CA
2.2 建立私有CA步骤:
1. 创建所需要的文件
touch/etc/pki/CA/index.txt ---颁发证书时写入内容
echo 01 >/etc/pki/CA/serial ---序列号文件,从1开始
2. 生成私钥文件:/etc/pki/CA/private/cakey.pem
(umask 077; openssl genrsa -out/etc/pki/CA/private/cakey.pem 2048)
3. 生成自签证书
openssl req -new -x509 -key/etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
其中:
-new: 生成新的证书签署请求
-key: 私有文件路径,用于提取公钥
-days N : 证书有效时长
-out: 输出文件保存路径
-x509: 直接输出自签署的证书文件,通常只有构建CA时,才这么用
2.3. 给客户端颁发证书
在需要使用证书的主机上生成证书请求
1. 给web服务器生成私钥
(umask 066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048) 注意:-out指定的路径是需要使用证书的服务的路径
2. 生成证书申请文件
openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr 注意:httpd.csr就是请求文件
3.将证书请求文件传输给CA
4. CA签署证书,并将证书颁发给请求者:
openssl ca -in/root/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 注意:httpd.crt为生成的证书
注意:默认国家,省,公司名称必须和CA一致,如果是公有CA,那么公司的地址不一定在一个城市,那么久需要修改配置文件了
vim/etc/pki/tls/openssl.cnf
5.查看生成的证书的信息:
openssl x509 -in/etc/pki/CA/certs/httpd.crt -noout-text|subject|serial|dates
6.吊销证书
(1)在客户端获取要吊销的证书的serial
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(2)在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致
吊销证书:
openssl ca-revoke /etc/pki/CA/newcerts/01.pem
生成吊销证书的编号(第一次吊销一个证书时才需要执行)
echo 01 >/etc/pki/CA/crlnumber
更新证书吊销列表
openssl ca crl-gencrl -out /etc/pki/CA/crl/ca.crl