opessl工具使用

一、openssl工具基本应用
SSL是Secure Socket Layer(安全套接层)的缩写,可以在Internet上提供秘密性传输。OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。openssl是一个多功能命令工具,可生成密钥、创建数字证书、手动加密解密数据。这里先介绍openssl的基本使用,接着就使用openssl去创建CA。想要查看openssl的命令,可以使用openssl ?
1) OpenSSL由三部分组成:
libencrypt:加密算法库
libssl :加密模块应用库,实现了ssl及tls
openssl:多用途名命令行工具
2)SSL会话主要三步:
客户端向服务器端索要并验证证书:
双发协商生产“会话密钥”
双方采用“会话密钥”进行加密通信
3)SSL handshake Protocol
第一阶段: ClientHello:
支持的协议版本,比如tsl.1.2
客户端生产一个随机数,稍后用户生成“会话密钥”
支持的加密算法:AES,3DES,RSA
支持的压缩算法:
第二阶段: ServertHello:
确认使用的加密通讯协议版本,
服务器端生产一个随机数,稍后用户生成“会话密钥”
确认使用的加密方法:
服务器证书
第三阶段:
验证服务器证书,取出公钥;(发证机构、证书完整性、证书持有者、有效期)
发送信息给服务器端:
一个随机数:用于服务器公钥加密
编码变更通知;随后信息都将使用双方商定加密方法和密钥通信
客户端握手结束通知;
第四阶段:
收到客户端第三个随机数,计算生产本次会话所有的“会话密钥”
向客户端发送如下信息:
编码变更通知:表示随后的信息都将使用双方协商的加密方法和密钥发送
服务端握手结束通知
4)标准命令:
enc,ca ,req,genrsa
5)对称加密
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d]
[-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt]
[-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine
id]
参数:
-in filename:指定要加密的文件存放路径

-out filename:指定加密后的文件存放路径

-salt:自动插入一个随机数作为文件内容加密,默认选项

-e:可以指明一种加密算法,若不指的话将使用默认加密算法

-d:解密,解密时也可以指定算法,若不指定则使用默认算法,但一定要与加密时的算法一致

-a/-base64:使用-base64位编码格式
示列:
加密:openssl enc -e -des3 -a -salt -in /etc/fstab -out /tmp/fstab.des3
解密:openssl enc -d -des3 -a -salt -in /tmp/fstab.des3 -out /tmp/fstab
6)单向加密需要使用的标准命令为 dgst
主要用于计算出文件的特征码,确保文件完整性,用法如下:

openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary]
[-out filename] [-sign filename] [-keyform arg] [-passin arg] [-verify filename] [-prverify
filename] [-signature filename] [-hmac key] [file...]
参数: [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] 指定一种算法
示列:
openssl dgst -md5 /tmp/fstab.text1
7)生成用户密码:
openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify]
[-quiet] [-table] {password}

  常用选项有:

-1:使用md5加密算法

-salt string:加入随机数,最多8位随机数

-in file:对输入的文件内容进行加密

-stdin:对标准输入的内容进行加密
示列:
openssl passwd -1 -salt 123455 -in /etc/fstab
echo nihao | openssl passwd -1 -stdin
8)生成随机数需要用到的标准命令为 rand ,用法如下:

openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
常用选项有:

-out file:将生成的随机数保存至指定文件中

-base64:使用base64 编码格式

-hex:使用16进制编码格式
openssl rand -hex 123 -out /tmp/shu
9)生成密钥
openssl genrsa [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256]
[-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-f4] [-3] [-rand
file(s)] [-engine id] [numbits]
选项:
-out filename :将生成的密钥保存至指定的文件中
[-aes128] [-aes192] :不同的加密算法
numbits:指定生成私钥的大小,默认是2048
秘钥文件的权限一定要控制好,只能自己读写,因此可以使用 umask 命令设置生成的私钥权限,示例如下:

10)提取公钥
openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg]
[-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]
常用选项:

-in filename:指明私钥文件

-out filename:指明将提取出的公钥保存至指定文件中

-pubout:根据私钥提取出公钥

示例如下:
二、创建CA证书:
1)使用openssl工具创建CA证书和申请证书时,需要先查看配置文件,因为配置文件中对证书的名称和存放位置等相关信息都做了定义,具体可参考 /etc/pki/tls/openssl.cnf 文件。

2)在确定配置为CA的服务器上生产一个自签证书,并为CA提供所需要的目录及文件
生成私钥
路径为: /etc/pki/CA/private/cakey.pem 4096
示列:

生成自签证书:
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/CA/cacert.pem -days time
参数:
-new:生成新证书签署请求
-x509:生成自签格式证书,专用于创建私有CA
-key: 生成请求用到的文件路径
-out:生成请求文件路径,如果自签操作将直接生产签署过证书
-days:证书的有效时长,单位是天 默认是365天
示列:
3)为CA提供所需的目录及文件;
mkdir /etc/pki/CA{crets,crl,mewcres}
touch /etc/pki/CA{serial,index,txt

指定证书开始编号
echo 01>/etc/pki/CA/serial
3)签署颁布证书:在需要使用证书进行安全通信的服务器,需要向CA请求签署证书,已httpd为列:注意:前三步为需要使用证书的主机上面进行,第四步需要在CA主机上面进行
(1)用到证书的主机生成私钥

(2)生成证书签署请求

(3)将请求通过可靠方式发送给CA主机
假如通过其他方式复制到CA主机的/tmp/httpd.crt
(4)CA主机签署证书:


三、吊销证书
(3)吊销证书

吊销证书的步骤也是在CA服务器上执行的,以刚才新建的 httpd.crt 证书为例,吊销步骤如下:

第一步:在客户机上获取要吊销证书的 serial 和 subject 信息

第二步:根据客户机提交的 serial 和 subject 信息,对比其余本机数据库 index.txt 中存储的是否一致

第三步:执行吊销操作

第四步:生成吊销证书的吊销编号 (第一次吊销证书时执行)

]# echo 01 > /etc/pki/CA/crlnumber

第五步:更新证书吊销列表

]# openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl

查看 crl 文件命令:

]# openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text

转载于:https://blog.51cto.com/8950428/2120735

你可能感兴趣的:(opessl工具使用)