openssl部分解读
前言
openssl是个开源的加密库。可以对文件进行加密解密。
小知识
术语:
单词: Encryption 加密 Decryption 解密 ssl 安全socket层
tsl 最新协议版本3.1兼容ssl3.0 ,可以自动切换
加密解密:
小孩加密方式,只能防小孩,对专业人士无效。专业加密方式比如openssl,可防止政府这类机构解密
加密解密主要应用于战争。现在用于电子商务等。
对称加密解密过程
对称加密是用同一把钥匙进行加解密,他们的过程如下

明文 ---》加密 ---》密文 ---》解密 ---》 明文
#加密
openssl enc -ciphername -k password -in file -out file
-ciphername 加密算法名称 -in 需要加密的文件 -out输出的加密文件
#解密
openssl enc -ciphername -k password -d -in file -out file
-ciphername 加密算法名称 -in 需要解密的文件 -out输出的解密文件 #加密算法有这些ciphers:base64,des,des3,rc2,rc5,aes256
#那种方法加密算法,就用那种加密算法解密
优点:对称加密速度快 缺点:密钥传递困难。
非对称加密
生成一对钥匙对。一个是公钥一个是私钥。公钥加密,只能通过私钥解密,私钥加密,只能通过公钥解密。优点传输方便,缺点 加密速度慢

非对称加密的算法有rsa算法,非对称加密的key很长,比如1024位,难于记忆,通常把key保存为文件。具体过程如下
openssl genrsa -out file #产生1024位私钥文件
openssl rsa -in file -pubout >pub.key
#生成公钥文件,私钥生成公钥,重定向pub.key
#-pubout 输出屏幕 加解密例子:
#公钥加密
openssl rsautl -in file -out file -inkey file -pubin -encrypt
#-pubin 表明公钥文件 -encrypt 加密
#私钥解密
openssl rsautl -in file -out file -inkey file -decrypt
混合使用
由于对称和非对称的优缺点得知,用非对称加密数据耗时太长,不利于大数据传输,对称加密速度很对,但密钥传递困难,就有了混合模式,见下图:

此图过程翻译如下:
明文加密前,生成个随机的session key用来对称加密,session key把明文加密,公钥再把session key加密 ,打包两者发送给server端。
解密过程:
解包,私钥解密session key的加密,拿到解密的seesion key 再解密明文加密的数据.
数字签名
数字签名就是私钥加密,公钥解密。比如签订合同,商家手里是公钥,我是私钥,我用私钥签订了合同,商家如何证明是我签的呢?拿公钥能打开,就证明是我签的名
#私钥签名
openssl rsautl -in test.txt -out test.sig -inkey prv.key -sign
-sign私钥签名 #公钥解密
openssl rsautl -in test.sig -out test.txt -inkey pub.key -pubin -verify
哈希函数
常用的md5函数或sha1函数,生成的字节码分别是128/160位。
#文件摘要的特征码
openssl dgst -md5 file
md5sum file
openssl dgst -sha1 file
sha1sum file
上一节我们知道,混合使用的方法,让两者加密技术羊长避短,思考下,如何证明公钥就是那个人的呢?
证书
ca证书是一个第三方机构,大家相信他。一个证书包含三个,第一个公钥,第二个DN,一些注册信息,第三个证书机构的私钥签名,签名的是什么?对公钥和DN这个文件进行hash,在用私钥对起加密。

ssl
安全socket层,也就是现在用的https,它位于传输层之上,应用层之下,因为它不修改TCP协议,所以被大家所接受,修改TCP协议的ssl都死掉了。

ssl的应用:
现在的HTTP的服务端软件流行的有apache和nginx,具体如何把证书嵌套在应用里,大家具体百度下。
证书可以生成两种,一种是基于服务端自签名的证书,另一种是基于客户端和服务端都需要认证的证书。用的最多的也是第一种,第二种百度下就能找到,这里不提
参数解释:
-x509 国际标准格式
-keyout 私钥文件
-out server.crt 数字证书
-subj "/CN=TEST-ONLY ..."
生成证书:
openssl req -new -x509 -days \
-keyout server.key -out server.crt \
-subj "/CN=TEST-ONLY ..."
总结:
本知识来源于小布老师的openssl讲解,详细可以参考播布客搜小布老师的ssl教程。
openssl部分解读的更多相关文章
- 令人作呕的OpenSSL
在OpenSSL心脏出血之后,我相信非常多人都出了血,而且流了泪...网上瞬间出现了大量吐嘈OpenSSL的文章或段子,仿佛内心的窝火一瞬间被释放了出来,跟着这场疯闹,我也吐一下嘈,以雪这些年被Ope ...
- 讨厌OpenSSL
在OpenSSL心脏出血后,.我相信很多人都出了血.而流下眼泪...瞬间出现在网上了很多吐槽OpenSSL文章还是那条,窝火一刻仿佛心脏被释放出来,按照这个忙疯了,我吐在嘈杂.在这些年被雪OpenSS ...
- 解读Scrapy框架
Scrapy框架基础:Twsited Scrapy内部基于事件循环的机制实现爬虫的并发.原来: url_list = ['http://www.baidu.com','http://www.baidu ...
- 如何使用OpenSSL工具生成根证书与应用证书
如何使用OpenSSL工具生成根证书与应用证书 一.步骤简记 // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认) openssl req -new -x509 -d ...
- 使用OpenSSL工具制作X.509证书的方法及其注意事项总结
版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/Ping_Fani07/article/details/21622545 怎样使用OpenSSL工具生成根证 ...
- 源代码方式向openssl中加入新算法完整具体步骤(演示样例:摘要算法SM3)【非engine方式】
openssl简单介绍 openssl是一个功能丰富且自包括的开源安全工具箱.它提供的主要功能有:SSL协议实现(包括SSLv2.SSLv3和TLSv1).大量软算法(对称/非对称/摘要).大数运算. ...
- 密码学系列之:使用openssl检测网站是否支持ocsp
目录 简介 支持OCSP stapling的网站 获取服务器的证书 获取OCSP responder地址 发送OCSP请求 一个更加简单的方法 总结 简介 OCSP在线证书状态协议是为了替换CRL而提 ...
- 创建私有CA,我就用openSSL
目录 简介 搭建root CA 生成root CA 使用CRL 使用OSCP 总结 简介 一般情况下我们使用的证书都是由第三方权威机构来颁发的,如果我们有一个新的https网站,我们需要申请一个世界范 ...
- SDWebImage源码解读之SDWebImageDownloaderOperation
第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...
随机推荐
- windows H2database 安装
转载百度经验 H2是一个开源的.纯java实现的关系数据库,小巧并且使用方便,十分适合作为嵌入式数据库使用 首先打开浏览器进入H2官网http://www.h2database.com/html/ma ...
- python已处理的异常
字符串比较中,如果一个字符串有内容,另一个没有内容,python不会报错,而是认为两个字符串不相同如 a=" b="" if a[4:5]==b[4:5]: print( ...
- JS中JSON.stringify()方法,将js对象(json串)转换成字符串,传入服务器
JSON 通常用于与服务端交换数据. 在向服务器发送数据时一般是字符串. 我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串. 语法 JSON.string ...
- centos6 / centos7 安装apache
=================centos6.1 安装apache===================== 安装: yum -y install httpd 启动 /etc/init.d/htt ...
- 英语单词Repository
Repository 来源——查看仓库的名称内容 [root@centos7 ~]# yum repolist Loaded plugins: fastestmirror Repository bas ...
- Linux系统重要文件(二)
Linux系统重要文件概述 一系统自动挂载文件 文件路径信息:/etc/fstab文件作用说明:实现存储设备自动挂载 [root@centos7 ~]# cat /etc/fstab # # /etc ...
- Kafka长文总结
Kafka是目前使用较多的消息队列,以高吞吐量得到广泛使用 特点: 1.同时为发布和订阅提供搞吞吐量.Kafka的设计目标是以时间复杂度为O(1)的方式提供消息持久化能力的,即使对TB级别以上数据也能 ...
- shell脚本学习(4)cut
cut 的两种用法 1种是 -c list 剪切字符串中特定位置的文字, /etc/passwd中的原始数据: yuyuyu:x:1000:1000:yuyuyu,,,:/home/yuyuyu: ...
- 专为渗透测试人员设计的 Python 工具大合集
如果你对漏洞挖掘.逆向工程分析或渗透测试感兴趣的话,我第一个要推荐给你的就是Python编程语言.Python不仅语法简单上手容易,而且它还有大量功能强大的库和程序可供我们使用.在这篇文章中,我们会给 ...
- inputAccessoryView,inputView
我们在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘. 但是当我 ...