OpenSSL(简易版)

OpenSSL(简易版)_第1张图片

OpenSSL:开源项目

三个组件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令:
enc, ca, req, ...
openssl命令
对称加密:
工具: openssl enc, gpg
算法: 3des, aes, blowfish, twofish
常用选项有:
-in filename:指定要加密的文件存放路径
-out filename:指定加密后的文件存放路径
-salt:自动插入一个随机数作为文件内容加密,默认选项
-e:可以指明一种加密算法,若不指的话将使用默认加密算法
-d:解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致
-a/-base64:当进行加解密时,他只对数据进行运算,有时需要进行base64转换,设置
此选项后加密结果进行base64编码,
解密前先进行base64编码。
enc命令:
帮助: man enc
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
openssl ?
openssl命令
单向加密:
工具: md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst
常用选项有:
[-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] :指定一种加密算法
-out filename:将加密的内容保存到指定文件中
dgst命令:
帮助: man dgst
openssl dgst -md5 [-hex默认16进制] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通
信中保证所传输数据的完整性机制
CBC-MAC
HMAC:使用md5或sha1算法
openssl命令
生成用户密码:
passwd命令:
帮助: man sslpasswd
常用选项有:

-1:使用md5加密算法
-salt string:加入随机数,最多8位随机数
-in file:对输入的文件内容进行加密
-stdion:对标准输入的内容进行加密

openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos
生成随机数:
帮助: man sslrand
openssl rand -base64|-hex NUM 
-out file:将生成的随机数保存至指定文件中
-base64:使用-base64位编码格式(图片,二维码转换)
NUM: 表示字节数; -hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
openssl命令
公钥加密:
openssl的rsa实现:rsa子命令是RSA key processing tool,而rsautil才是加解密工具 ,但是公钥
一般不用于加密
算法: RSA, ELGamal
工具: gpg, openssl rsautl( man rsautl)
数字签名:
算法: RSA, DSA, ELGamal  数字签名
密钥交换:
算法: dh
DSA: Digital Signature Algorithm
DSS: Digital Signature Standard
RSA:
openssl命令
生成密钥对儿: man genrsa
生成私钥
首先需要先使用 genrsa 标准命令生成私钥,然后再使用 rsa 标准命令从私钥中提取公钥。
常用选项有:
-out filename:将生成的私钥保存至指定的文件中
-des|-des3|-idea:不同的加密算法
numbits:指定生成私钥的大小,默认是2048
一般情况下秘钥文件的权限一定要控制好,只能自己读写,因此可以使用 umask 命令设置
生成的私钥权限
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa –out test.key –des 2048)     #不加括号()umask将影响后续
所有命令
从私钥中提取出公钥
-in filename:指明私钥文件
-out filename:指明将提取出的公钥保存至指定文件中 
-pubout:根据私钥提取出公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
Openssl rsa –in test.key –pubout –out test.key.pub
随机数生成器:伪随机数字
键盘和鼠标
块设备中断
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
Openssl
PKI: Public Key Infrastructure
CA
RA
CRL
证书存取库
建立私有CA:
OpenCA
openssl
证书申请及签署步骤:
1、生成申请请求
2、 RA核验
3、 CA签署
4、获取证书
创建CA和申请证书
创建私有CA:
openssl的配置文件: /etc/pki/tls/openssl.cnf
三种策略: 匹配、支持和可选
匹配指要求申请填写的信息跟CA设置信息必须一致, 支持指必须填写这项申请信息, 可选指可有可无
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/SOMECERTFILE: 证书的保存路径
3、 颁发证书
A 在需要使用证书的主机生成证书请求
给web服务器生成私钥
(umask 066; openssl genrsa -out
/etc/pki/tls/private/test.key 2048)
生成证书申请文件
openssl req -new -key /etc/pki/tls/private/test.key
-days 365 -out etc/pki/tls/test.csr
B 将证书请求文件传输给CA
C CA签署证书,并将证书颁发给请求者
openssl ca -in /tmp/test.csr –out
/etc/pki/CA/certs/test.crt -days 365
注意:默认国家,省,公司名称三项必须和CA一致
D 查看证书中的信息:
openssl x509 -in /PATH/FROM/CERT_FILE -noout
-text|issuer|subject|serial|dates
openssl ca -status SERIAL 查看指定编号的证书状态
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/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text

你可能感兴趣的:(OpenSSL(简易版))