openssl命令
Posted feng-land
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openssl命令相关的知识,希望对你有一定的参考价值。
加密算法和协议:
对称加密:数据加密(保密性),(3DES,AES)
公钥加密:身份认证,密钥交换,数据加密,()RSA,DSA
单向加密:数据完整性(MD5,SHA1)
密钥交换:RSA,DH,ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH)
SSL:安全套接字层(ssl 1.0,ssl 2.0,ssl 3.0)
TLS:传输层安全(tls 1.0,tls 1.1,tls 1.2 tls 1.3)
OpenSSL:
libcrypto
libssl
openssl
SSL会话主要三步:
客户端向服务器端索要并验证证书;
双方协商生成“会话密钥”;
双方使用“会话密钥”进行加密通信;
第一阶段:ClientHello:
支持的协议版本,比如tls1.2
客户端生成一个随机数,稍后用户生成“会话密钥”
支持的加密算法,比如AES、RSA;
支持的压缩算法;
第二阶段:ServerHello
确认使用的加密通信协议版本,比如tls1.2
服务器端生成一个随机数,稍后用于生成“会话密钥”
确认使用的加密方法;
服务器证书;
第三阶段:
验证服务器证书,确认无误后取出其公钥;(发证机构、证书完整性、证书持有者、证书有效期、吊销列表)
发送以下信息给服务器端;
一个随机数;
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
客户端握手结束通知;
第四阶段:
收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有的“会话密钥”;
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
服务端握手结束通知;
PKI:Public Key Infrastructure
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
OpenSLL(2)
组件:
libcrypto,libssl主要由开发者使用;
openssl:多用途命令行工具;
子命令:
标准命令
dgst命令
enc命令
加密:#openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:#openssl enc -d -des3 -a -salt -out fstab.plaintext -in fstab.ciphertext
单向加密:
工具:openssl dgst,md5sum,sha1sum,sha224sum,...
# openssl dgst -md5 /PATH/TO/SOMEFILE
生成用户密码:
工具:passwd,openssl passwd
openssl passwd -1 -salt SALT
生成随机数:
工具:openssl rand
# openssl rand -hex 10
# openssl rand -base64 10
公钥加密:
加密解密:
算法:RSA,ELGamal
工具:openssl rsautl,gpg
数字签名:
算法:RSA,DSA,ELGamal
工具:
密钥交换:
算法:DH
生成私钥:
# (umask 077;openssl genrsa -out /tmp/mykey3.private 2048)
提取公钥:
# openssl rsa -in /tmp/mykey3.private -pubout
Linux系统上的随机数生成器:
/dev/random:仅从熵池返回随机数,随机数用尽,阻塞;
/dev/urandom:从熵池中返回随机数,随机数用尽,利用软件生成伪随机数,非阻塞;
熵池中随机数来源:
硬盘IO中断时间间隔;
键盘IO中断时间间隔;
CA:
公共信任CA,私有CA
建立私有CA:
openssl
OpenCA
openssl命令
配置文件:/etc/pki/tls/openssl.cnf
构建私有CA:
生成自签名证书:
为CA提供所需的目录及文件;
步骤:
1.生成私钥;/etc/pki/CA/private/
# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
2.生成自签名证书(请求、签署一起);/etc/pki/CA/
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
3.为CA提供所需的目录及文件;
# mkdir /etc/pki/CA{certs,crl,newcerts}
# touch /etc/pki/CA/{serial,index.txt}
# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,向CA请求证书
1.生成私钥文件
# mkdir /etc/httpd/ssl
# cd /etc/httpd/ssl
# (umask 077;openssl genrsa -out httpd.key 2048)
2.生成证书签发请求
# openssl req -new -key httpd.key -out httpd.csr -days 365
3.CA签发证书
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
4.查看证书信息
# openssl x509 -in httpd.crt -noout -serial -subject
查看序列号和subject
CA吊销客户证书
1.客户端获取要吊销证书的serial
# openssl x509 -in httpd.crt -noout -serial -subject
2.CA吊销证书
先根据客户提供的serial和subject信息,和本机数据库index.txt中存储的信息是否一致
吊销:
# open ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
3.生成吊销证书的吊销编号(第一次吊销时)
# echo 01 > /etc/pki/CA/crlmumber
4.更新证书吊销列表
# openssl ca -gencrl -out thisca.crl
查看crl文件
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
以上是关于openssl命令的主要内容,如果未能解决你的问题,请参考以下文章