linux基础之加密解密、PKI及SSL、创建私有CA
加密解密基础
1. 对称加密: 加密和解密使用同一个密钥
常见的加密算法有:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5
特性:
1. 加密、解密使用同一个密钥
2.将原始数据分隔成固定大小的块,逐个进行加密
缺陷:
1. 密钥过多
2. 密钥分发困难
2. 公钥加密: 密钥是成对出现的
公钥:pubkey,公开给所有人
私钥:secret key, 自己留存,必须保证其私密性
常见的加密算法有: RSA、DSA(只能用于数字签名,不能用于数据加密), ELGamal
特点: 用公钥加密的数据,只能使用与之配对的私钥解密,反之亦然
3. 单向加密: 只能加密,不能解密,用来提取数据特征码,验证数据完整性
常见加密算法有:MD5、SHA1、SHA224、SHA256、SHA384、SHA512
特性: 定长输出,雪崩效应,一个小的改变,加密后的密钥就大不同
密钥交换(IKE): 常见的有公钥加密、DH(Deffie-Hellman)来实现密钥交换
PKI: Public Key Infrastructure 公钥基础设施
主要组件:
签证机构:CA
注册机构:RA
证书吊销列表: CRL
证书存取库
目前签发的证书:x.509
x.509: 定义了证书的结构以及认证协议标准:
版本号
序列号
签署算法ID
有效期限
发行者名称
主体名称
主体公钥
发行者唯一标识
主体的唯一标识
扩展
发行者签名
SSL:Secure Socket Layer, 安全的套接字层
TLS: Transport Layer Security
openssl:开源项目
三个组件:
openssl: 多用途的命令行工具
libcrypto: 公共加密库
libssl: 库,实现了ssl及tls
openssl命令:配置文件: /etc/pki/tls/openssl.conf
openssl version: 查看程序版本号
常见的标准命令有enc、ca、req
对称加密:
工具: openssl enc, gpg
加密: # openssl enc -e -des3 -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMEFILE
解密: # openssl enc -d -dec3 -a -salt -in /PATH/FORM/SOMEFILE -OUT /PATH/TO/SOMEFILE
单向加密:
工具:openssl dgst, md5sum,sha1sum,sha224sum,sha256sum...
加密: openssl dgst -md5 /PATH/TO/SOMEFILE
生成用户密码:passwd
# openssl passwd -1 -salt SALT
生成随机数:rand
# openssl rand -base64|-hex NUM
NUM:表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2
公钥加密:
加密: RSA, ELGamal
工具:gpg, openssl, rsautil
加密私钥:# (umask 077; openssl genrsa -out private.key 2048)
提取公钥:# openssl rsa -in private -pubout
创建私有CA
1. 创建所需要的文件
# touch index.txt
# echo 01 > serial
2.CA自签证书
#(umask 077;openssl genrsa -out /etc/pki/CA/private.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/casert.pem
-new: 生成新证书签署请求
-x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n : 证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保持路径
3. 发证
a. 用到证书的主机生成证书请求
# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
# openssl -req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
b. 把请求文件传输给CA
# scp /etc/httpd/ssl/httpd.csr root@192.168.1.103:/tmp/
c. CA签署证书,并将证书发还给请求者
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看证书中的信息
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial
4. 吊销证书
a. 获取要吊销的证书的serial
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
b. CA
先根据客户端提交的serial与subject信息对比检验是否与index.txt文件中的信息一致
吊销证书:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
c. 生成吊销证书的编号(第一次吊销一个证书)
# ech 01 > /etc/pki/CA/crlnumber
d. 更新证书吊销列表
# openssl ca -gencrl -out thisca.crl
查看crl文件
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
linux基础之加密解密、PKI及SSL、创建私有CA的更多相关文章
- 创建私有CA, 加密解密基础, PKI, SSL
发现了一篇图文并茂的超棒的 加密解密, CA, PKI, SSL 的基础文章, 链接如下:https://blog.csdn.net/lifetragedy/article/details/5223 ...
- Linux下OpenSSL加密解密压缩文件(AES加密压缩文件)
OpenSSL是一个开源的用以实现SSL协议的产品,它主要包括了三个部分:密码算法库.应用程序.SSL协议库.Openssl实现了SSL协议所需要的大多数算法.下面介绍使用Openssl进行文件的对称 ...
- linux SElinux防护 加密解密 gpg签名与认证
SElinux Security-Enhanced Linux由美国国家安全局主导开发一套强化linux安全的mac扩展模块 selinux的运作机制:集成到linux内核上(2.6及以上)操作系统提 ...
- AES加密、解密(linux、window加密解密效果一致,支持中文)
转自: http://sunfish.iteye.com/blog/2169158 import java.io.UnsupportedEncodingException; import java.s ...
- 6、Linux基础--文件类型、属性信息、创建用户与用户组
笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...
- ssl协议,openssl,创建私有CA
SSL是Security Socket Layer:安全的套接字层 他介于HTTP和TCP协议层之间 SSL是Netscape公司开发的,属于个人 TLS是标准委员会制定的 OpenSSL是SSL的开 ...
- 【linux基础】第九周作业
1.详细描述一次加密通讯的过程,结合图示最佳. 加密通讯:A <--> B 1)A与 B通信,首先A.B双方都应该持有对方的公钥,即证书,并验证证书的合法性. 2)加密: i. A ...
- Linux 加密安全和私有CA的搭建方法
常用安全技术 3A: 认证:身份确认 授权:权限分配 审计:监控做了什么 安全通信 加密算法和协议 对称加密: 非对称加密 单向加密:哈希(hash)加密 认证协议 对称加密: 加密和解密使用的是同一 ...
- php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密
PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...
随机推荐
- win10环境下Android SDK下载安装及配置教程
最近在配置Android环境时,发现网上许多教程都是在win7版本下进行配置的且存在许多问题,按照流程无法正确配置环境,因此我在收集网上资料及亲自配置成功的情况下,写出此文章.如有无法配置成功的话,欢 ...
- Xposed免重启调试工具类
直接放代码 package com.xirtam.hello; import android.app.Application; import android.content.Context; impo ...
- 你应当如何学习C++以及编程(细节是必要的,但不是重要的,把时间用在集中精力去解决问题,而不是学习新技术,那样练不成高手。在实践中提高才是最重要的。最最重要的内功还是长期学习所磨练出来的自学能力)good
最近在学习Qt但由于没有C++的基础,感觉学的很吃力.看到pongba的这篇文章感觉不错就弄过来了, 原文地址:http://blog.csdn.net/qter_wd007/article/deta ...
- 时序图中的生命线与类绑定(EA)
使用时序图时序图( Sequence Diagram)时,有时候在起初拖放放的对象生命线未绑定相关的类. 如果: 但在后期需要和类进行绑定. 那么需要如下设置,右键你要关联的对象生命线,选择Advan ...
- ngnix 反向代理来解决前端跨域问题
1.定义 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源.注意:跨域限制访 ...
- 干了这杯Java之集合概览
Java集合框架支持两种类型容器: 一种是为了存储一个元素的合集,为Collection 一种是为了存储键/值对,为Mapping Collection包含 Set存储不重复的元素 List存储一个有 ...
- [USACO11DEC]牧草种植Grass Planting
图很丑.明显的树链剖分,需要的操作只有区间修改和区间查询.不过这里是边权,我们怎么把它转成点权呢?对于E(u,v),我们选其深度大的节点,把边权扔给它.因为这是树,所以每个点只有一个父亲,所以每个边权 ...
- xcodebuild 错误:unknown error -1=ffffffffffffffff
1.security list-keychains 2.security unlock-keychains -p "your password" "your login ...
- 【错误总结1:unity StartCoroutine 报 NullReferenceException 错误】
今天在一个项目中,写了一个单例的全局类,该类的作用是使用协程加载场景.但在StartCoroutine 这一步报了NullReferenceException 的错.仔细分析和搜索之后,得到错误原因. ...
- 4步解决“Microsoft Office Professional Plus 2013在安装过程中出错”
公司新搭建了AD域,公司内使用了1年多的电脑,现在要加入域,加域过程问题错综复杂. 其中一台电脑上,反应说Excel经常卡住,严重影响使用,所以考虑重装office2013.在控制面板卸载了: 卸载完 ...