Openssl
来源:互联网 发布:java中indexof的用法 编辑:程序博客网 时间:2024/06/07 14:08
OpenSSL是开源项目一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
三个组件:
openssl: 多用途的命令行工具,包openssl libcrypto: 加密算法库,包openssl-libs libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
配置文件:/etc/pki/tls/openssl.cnf
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令: enc, ca, req, …
1、对称加密:
工具: openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
帮助: man env
openssl enc -[e/d] [-a] [-salt] -Cipher -in /PATH/TO/SOMEFILE -out /PATH/TO/SOMEFILE
-e:加密
-d:解密
-a:将疏浚变成base64编码
-salt:添加随机数
-Cipher:加密的算法
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
2.单向加密 :
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst
dgst命令:
帮助:man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos
生成随机数:
帮助:man sslrand
openssl rand -base64|-hex
NUM NUM: 表示字节数;-hex时,每个字符为十六进制,相 当于4位二进制,出现的字符数为NUM*2
公钥加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
生成密钥对:man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa –out test.key –des 2048)
从私钥中提取公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
Openssl rsa –in test.key –pubout –out test.key.pub
如何创建CA和申请证书
创建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf
三种策略:匹配、支持和可选
匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必 须填写这项申请信息,可选指可有可无
在服务器主机生成证书
1、 创建所需要的文件
touch /etc/pki/CA/index.txt 生成证书索引数据库文件 echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号
2、 生成私钥
cd /etc/pki/CA/ (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048))
3、 生成自签名证书
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: 证书的保存路径
在客户端生成证书签署请求
- 给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
将证书请求文件传输给CA
scp命令CA签署证书,并将证书颁发给请求者
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365
注意:默认国家,省,公司名称三项必须和CA一致
证书管理:
查看证书中的信息:
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates openssl ca -status SERIAL 查看指定编号的证书状态
吊销证书
在客户端获取要吊销的证书的
serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
在CA上,根据客户提交的serial与subject信息,对比检验是 否与index.txt文件中的信息一致,吊销证书:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
指定第一个吊销证书的编号
注意:第一次更新证书吊销列表前,才需要执行 echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
- OpenSSL
- OpenSSL
- OpenSSL
- OpenSSL
- OpenSSL
- Openssl
- openssl
- openssl
- OpenSSL
- OpenSSL
- openssl
- Openssl
- openssl
- openssl
- OpenSSL
- openssl
- openssl
- OpenSSL
- 二叉查找树、平衡二叉树、红黑树、B-/B+树性能对比
- eclipse如何导出apk文件
- 深度学习训练的小技巧,调参经验。总结与记录。
- usaco training Barn Repair题解
- 1084 hash
- Openssl
- MYSQL中的索引
- c语言 创建动态二维数组 读取txt文件到数组
- java每日一练
- bzoj2150: 部落战争
- java线程安全总结
- 策略模式--js设计模式与开发实践-7
- Oracle--Sequence详解
- 二维数组的查找