openssl 三个组件:
openssl : 多用途的命令行工具
libcrypto : 加密算法库
libssl : 加密模块应用库,实现了ssl及tls
openssl 命令 :
两种运行模式: 交互模式和批处理模式
openssl version : 程序版本号
标准命令,消息摘要命令,加密命令
标准命令: enc,ca,req,...
对称加密 :
工具 : openssl enc,gpg
算法 : sdes,aes,blowfish,twofish
enc 命令 : man enc
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -e -des3 -a -salt -in testfile.cipher -out testfile
单向加密:
工具: md5sum,sha1sum,sha224sum,sha256sum
openssl dgst
sgst 命令: man dgst
openssl dgst –md5 [-hex 默认] /path/somefile
openssl dgst –md5 testfile
md5sum /path/file
MAC : Message Authentication Code ,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制
生成用户密码:
passwd 命令 : man passwd
openssl passwd -1 -satl SALT(最多8位)
生成随机数 : man sslrand
openssl rand -base64|-hex NUM
NUM : 表示字节数
-hex时,每个字符4位,出现的字符数为NUM*2
公钥加密:
算法: RSA,ELGamal
工具: gpg,openssl rsautl (man rsautl)
数字签名:
算法: RSA,DSA,ELGamal
密钥交换:
算法: dh
生成密钥对 : man genrsa
生成私钥:
openssl genrsa -out /path/to/key.file NUM_BITS
(umask 077;openssl genrsa -out key.pri -des 2048)
从私钥中提取出公钥:
openssl rsa -in PRIVETEKEYFILE -pubout -out PUBKEY
随机数生成器 : 伪随机数字
键盘和鼠标
块设备中断
/dev/random : 仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom : 从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
证书
PKI : Public Key Infrastructurs
CA
RA
CRL
证书存取库
建立私有CA
OpenCA
openssl
证书申请及签署步骤
-
生成申请请求
-
RA校验
-
CA签署
-
获取证书
创建私有CA ;
openssl的配置文件 : /etc/pki/tls/openssl.cnf
1,首先创建所需的文件:
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
2, CA自签证书:
生成私钥
cd /etc/pki/CA/
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
生成自签名证书
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new : 生成新证书签署请求
-x509 : 专用于CA生成自签证书
-key : 生成请求时用到的私钥文件
-days n : 证书的有效期限
-out /path/to/somefile : 证书的保存路径
3,颁发证书
a, 在需要使用证书的主机生成证书请求
给web服务器生成私钥
(umask 066;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
生成证书申请文件
openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
b, 将证书请求文件传输给CA
c, CA签署证书,并将证书颁发给请求者
openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
注意: 默认国家,省,公司名称必须和CA一致
d, 查看证书中的信息:
openssl x509 -in /path/from/cert_file -noout -text|subject|serial|dates
4,吊销证书:
a,在客户端获取要吊销的证书的serial
openssl x509 -in /path/from/cert_file -noout -serial -subject
b,在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt 文件中的信息一致
吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
c,生成吊销证书的编号(第一次吊销一个证书时才需要执行)
echo 01 > /etc/pki/CA/crlnumber
d,更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl
#查看crl文件
openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text