openssl工具详解及自建CA方法
前言:
openssl是一款很强大的多用途的开源加密解密的命令行工具,比如创建私钥,创建证书签名请求,测试各种加密算法耗时等等。
在我们进入openssl工具讲解之前,我们有必要先了解先Linux下的加密解密方式,以及常用的加密算法与协议。
然后最后我们详细讲解使用openssl自建CA的方法
目录:
1. Linux加密解密过程:
如图:
2. 常用密码算法和协议
常用的加密算法有三种:
1. 对称加密算法:
同一个密钥可以同时用作信息的加密和解密,将明文分割成固定大小的块,逐个进行解密,这种加密方法称为对称加密;
对称加密的缺陷就是需要维护的密钥太多。
常用的对称加密算法:DES (56)、3DES、AES (128,192,256,384,512)、Blowfish、Twofish、IDEA、RC6、CAST5等 ;
2. 公钥加密
也叫非对称加密,是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。
常用的公钥加密算法:RSA, DSA, EIGamal等;
3. 单向加密:
是不可解密的加密方法,是非可逆的;并且加密的结果是定长的
常用的公钥加密算法:MD5、SHA1、SHA256、SHA384、SHA512等;
实际上单向加密,一般只是用来提取文件特征码,验证数据或证书的数据完整性,也会被称为数据指纹
4.认证协议:
IKE协议(Internet Key Exchange):常用来确保虚拟专用网络×××与远端网络或者宿主机进行交流时的安全;
SSL( 安全套接字层): 网络通信提供安全及数据完整性的一种安全协议。
TLS(传输层安全): 是仿照SSL制定,用于在两个通信应用程序之间提供保密性和数据完整性。
3. openssl命令行工具简单应用
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
查看本机openssl版本:
#openssl version
3.1 对文件进行对称加密:
工具: openssl enc
算法:DES, 3DES, AES, Blowfish, Twofish, RC6, idea, CAST5
# openssl enc -des3 -a -salt -in /path/from/somefile -out /path/to/somecipherfile
# openssl enc -d -des3 -a -salt -in /path/from/somecipherfile -out /path/to/somefile
3.2 使用openssl做单向加密:
工具: openssl dgst
# openssl dgst [-md5|-sha1] [-out /path/to/filename] /path/from/somefile
MAC: 消息摘要码,单向加密的一种延伸类的应用
应用:用于实现在网络通信中保证所传输的数据的完整性
机制:
CBC-MAC
HMAC:使用md5或sha1算法
3.3 生成用户密码:
工具: openssl passwd
获取帮助:
#whatis passwd
passwd (1) - update user's authentication tokens
passwd (5) - password file
passwd [sslpasswd] (1ssl) - compute password hashes
选择最后那个,然后:
#man passwd sslpasswd
#openssl passwd -1 -salt jingming
Password: 输入密码后,回车
$1$jingming$jmHXxFlxswHGuht5Qbkgk/ #这里显示的第一段$$内容为salt,后面为密码
3.4 生成随机数:
生成随机数,主要是用于生成密码时候作为动态的salt来用
#openssl rand
#openssl rand -hex|-base64 num
#openssl rand -base64 4
例如: 生成一个随机salt的用户密码:
#oepnssl passwd -1 -salt `openssl rand -hex 4`
3.5 公钥加密(非对称加密)
公钥加密用的不多,因为公钥加密速度很慢。。。
算法: RSA, EIGamal
工具: gpg, openssl rsatul
3.6 数字签名
算法: RSA, EIGamal, DSA(只能用来签名,不能用来加密)
这两种表述都是用来做数字签名的
DSA: Digital Signature Algorithm
DSS: Digital Signature Standard
3.7 生成密钥(Private key):
#openssl genrsa -out /path/to/keyfile NUMBEROFBITS(位数:1024/2048/4096...)
#生成的是私钥,但是公钥是包含在private key内的。生成的私钥很重要,所以生成后,一定要更改权限为600或者400
但是我们可以通过下面的方式,来修改权限:
#(umask 077; openssl genrsa -out /path/to/keyfile NUMBEROFBITS)
用()表示在子shell中运行umask命令,及创建私钥, 这样umask只会对这两条命令有效,执行完,返回父shell,umask 077设置就无效了
提出公钥:
#openssl rsa -in /path/from/private_key_file -pubout
4. 利用openssl自建CA
4.1 建立CA服务器:
1、生成密钥
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、自签证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
req: 生成证书签署请求
-news: 新请求
-key /path/to/keyfile: 指定私钥文件
-out /path/to/somefile:
-x509: 生成自签署证书
-days n: 有效天数
3、初始化工作环境
# touch /etc/pki/CA/{index.txt,serial}
# echo 01 > /etc/pki/CA/serial
4.2 节点申请证书:
(一) 节点生成请求
1、生成密钥对儿
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
2、生成证书签署请求
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr
3、把签署请求文件发送给CA服务
# scp
(二) CA签署证书
1、验正证书中的信息;
2、签署证书
# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N
3、发送给请求者;
4.3 吊销证书
(一)节点
1、获取证书serial
# openssl x509 -in /path/to/certificate_file.crt -noout -serial -subject
(二) CA
2、根据节点提交的serial和subject信息来验正与index.txt文件中的信息是否一致;
3、吊销证书
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
4、生成吊销证书的编号(如果是第一次吊销)
# echo 00 > /etc/pki/CA/crlnumber
5、更新证书吊销列表
# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out thisca.crl
如果需要,查看crl文件的内容:
# openssl crl -in /path/to/crlfile.crl -noout -text
转载于:https://blog.51cto.com/richier/1669883
openssl工具详解及自建CA方法相关推荐
- ownCloud/Nextcloud OCC命令行工具详解
OCC命令行工具详解 ownCloud/Nextcloud OCC命令行工具详解(1) ownCloud/Nextcloud OCC命令行工具详解(2) ownCloud/Nextcloud OCC命 ...
- rpm包安装和卸载,rpm查询,yum工具详解,yum仓库搭建
rpm包安装和卸载 [root@binbinlinux Packages]# rpm -ivh zip-3.0-1.el6.x86_64.rpm 安装rpm包命令 ivh I=安装的意思in ...
- centos rpm 安装 perl_XtraBackup工具详解 Part 2 xtrabackup安装
实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 1. xtrabackup版本 我们在官方网站可以看到xtrabackup有多个版本 https://www.perco ...
- Windows 下OpenSSL 安装详解 +图解
Windows 下OpenSSL 安装详解 +图解 转载于:https://www.cnblogs.com/zhujiabin/p/5088646.html
- Chrome开发者工具详解(4)-Profiles面板
Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...
- parted工具详解
通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大:而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘.但是现在的磁盘空间很多都已经是 ...
- Java定时任务调度工具详解之Timer篇
Java定时任务调度工具详解之Timer篇 https://segmentfault.com/a/1190000009542398
- python数值转换机_用于ETL的Python数据转换工具详解
ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...
- Java定时任务工具详解之Timer篇
Java定时任务调度工具详解 什么是定时任务调度? ◆ 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Java中的定时调度工具? ◆ Timer ◆Quartz Timer和Q ...
最新文章
- win10访问不了局域网计算机名,Win10正式版无法访问局域网电脑怎么办
- 持续集成之路——Maven
- android 圆角图片的实现
- Myeclipse中js文件中的乱码处理
- 70后、80后、90后的区别(很有意思)
- json数据封装以及使用Gson将json数据封装到bean
- 收藏!5V转3.3V电平的19种方法技巧
- 多径衰落信道下基带模型的多用户BPSK直接序列扩频系统MATLAB仿真(m序列、Gold序列和正交Gold序列)
- git上传新项目到服务器_springboot项目打包上传至阿里云服务器
- 笨办法学 Python · 续 练习 17:字典
- 库克:iPhone决不妥协!不爽换安卓 iPhone 更有“安全性和隐私性”
- linux 多线程超时中断,c#中的线程超时
- python除数为0报错_python 错误捕获机制分析
- Windows XP图片查看器打不开图片的解决办法
- 计算机应用基础知识竞赛题,计算机基础知识题库
- linux新手入门-2.开局
- matlab红色爱心,Matlab心形函数动态图
- 哪些专业不建议跨考计算机
- 可汗学院统计学笔记(一)
- 计算机毕业设计SSM大学生二手物品交易网站【附源码数据库】