本文共 4037 字,大约阅读时间需要 13 分钟。
一、openssl工具基本应用
SSL是Secure Socket Layer(安全套接层)的缩写,可以在Internet上提供秘密性传输。OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。openssl是一个多功能命令工具,可生成密钥、创建数字证书、手动加密解密数据。这里先介绍openssl的基本使用,接着就使用openssl去创建CA。想要查看openssl的命令,可以使用openssl ?1) OpenSSL由三部分组成:libencrypt:加密算法库libssl :加密模块应用库,实现了ssl及tlsopenssl:多用途名命令行工具2)SSL会话主要三步:客户端向服务器端索要并验证证书:双发协商生产“会话密钥”双方采用“会话密钥”进行加密通信3)SSL handshake Protocol第一阶段: ClientHello:支持的协议版本,比如tsl.1.2客户端生产一个随机数,稍后用户生成“会话密钥”支持的加密算法:AES,3DES,RSA支持的压缩算法:第二阶段: ServertHello:确认使用的加密通讯协议版本,服务器端生产一个随机数,稍后用户生成“会话密钥”确认使用的加密方法:服务器证书第三阶段:验证服务器证书,取出公钥;(发证机构、证书完整性、证书持有者、有效期)发送信息给服务器端:一个随机数:用于服务器公钥加密编码变更通知;随后信息都将使用双方商定加密方法和密钥通信客户端握手结束通知;第四阶段:收到客户端第三个随机数,计算生产本次会话所有的“会话密钥”向客户端发送如下信息:编码变更通知:表示随后的信息都将使用双方协商的加密方法和密钥发送服务端握手结束通知 4)标准命令:enc,ca ,req,genrsa5)对称加密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] [-engineid]参数:-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/fstab6)单向加密需要使用的标准命令为 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] [-prverifyfilename] [-signature filename] [-hmac key] [file...] 参数: [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] 指定一种算法示列:openssl dgst -md5 /tmp/fstab.text17)生成用户密码: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/fstabecho nihao | openssl passwd -1 -stdin8)生成随机数需要用到的标准命令为 rand ,用法如下:openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
常用选项有:-out file:将生成的随机数保存至指定文件中
-base64:使用base64 编码格式
-hex:使用16进制编码格式
openssl rand -hex 123 -out /tmp/shu9)生成密钥openssl genrsa [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256][-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-f4] [-3] [-randfile(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