Openssl ? 查看命令
Whatis <command> 查看命令有什么用处
Man enc
Openssl:
从多子命令,分为三类:
标准命令
信息摘要命令(dgst子命令)
加密命令(enc子命令)
对称加密:
工具: openssl enc gpg
支持的算法: des3 3des aes....
enc命令:
加密: openssl enc -e des3 -a -salt -in 从哪里获取 -out 保存为
]# openssl enc -e -des3 -a -salt -in passwd -out pss.txt
解密: openssl enc -d des3 -a -salt -in -out
]# openssl enc -d -des3 -a -salt -in pss.txt -out passwd
单项加密:
工具: openssl dgst,md5sum.sha1sum,sha224sum
dgst命令:
]# openssl dgst -md5 passwd
MD5(passwd)= 141aa3b65bc687ef1ba273a8f0b8d87a
]# md5sum passwd
141aa3b65bc687ef1ba273a8f0b8d87a passwd
#两个效果一样
生成用户密码:
工具: passwd, openssl passwd
]# whatis passwd
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
]# man sslpasswd
]# openssl passwd -1 -salt 123 #加密
生成随机数密码
工具: openssl rand
]# whatis rand
]# man sslrand
]# openssl rand -base64 NUM
]# openssl rand -hex NUM 每次的密码都不一样
公钥加密:
加密解密:
算法: RSA, ELGamal
工具: openssl rsautl,gpg
数字签名:
算法: RSA, DSA, ELGamal
工具: 和上面一样
密钥交换:
算法: DH
生成密钥:
生成公钥: ]# (umask 077;openssl genrsa 2048 > ./k.private)
提取公钥: ]# openssl rsa -in ./k.private -pubout
Linux系统上的随机数生成器:
/dev/rabdom 仅从内存返回随机数,随机数用尽,阻塞;
/dev/urandom 从内存返回随机数,随机数用尽,会利用软件生成伪随机数,非阻塞
伪随机数不安全;
CA:
公共信任的CA,私有CA
建立私有CA:
openssl
openCA
Openssl命令:
配置文件: ]# ls /etc/pki/tls/openssl.cnf
构建私有CA:
在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需的目录及文件即可;
步骤:
(1)生成私钥:
]# (umask 077;openssl genrsa 4096 > /etc/pki/CA/private/cakey.pem)
(2)生成自签证书:
]# man req
]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
-new: 生成新证书签署请求
-509: 生成自签格式证书,专用于创建私有CA时;
-key: 生成请求时用到的私有文件路径
-out: 生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days: 证书的有效时长,单位是天
(3)为CA提供所需的目录及文件;
]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} #如果默认没有的话就自建
]# touch /etc/pki/CA/{serial,index.txt}
]# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
步骤: (以httpd为例)
(1)用到证书的主机生成证书签署请求;
① ]# mkdir /etc/httpd/ssl
② ]# cd /etc/httpd/ssl
③ ]#(umask 077;openssl genrsa 2048 > /etc/httpd/ssl/httpd.key)
( 2 )生成证书签署请求
1) ]# openssl req -new -key /etc/httpd/ssl/httpd.key -out httpd.csr -days 365
( 3 ) 将请求通过可靠方式发送给CA主机:
]# scp /etc/httpd/ssl/httpd.csr 139.9.43.223:/tmp/
( 4 ) 在CA主机上签署证书:
]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpds -days 365
查看证书中信息:
]# openssl x509 -in certs/httpd.crt -noout -serial -subject
吊销证书:
步骤(需要在CA主机上执行)
(1) 客户端获取要吊销的证书的serial(在使用证书的主机执行);
]# openssl x509 -in certs/httpd.crt -noout -serial -subject
(2) CA主机吊销证书
先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
]# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
其中SERIAL要换成证书真正的序列号
(3) 生成吊销证书的吊销编号(第一次吊销证书时执行)
]# echo 01 > /etc/pki/CA/crlnumber
(4) 更新证书吊销列表
]# openssl ca -gencrl -out thisca.crl
查看crl文件
]# openss crl -in /PATH/FROM/CRL_FILE.crl -noout -text