前言

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部分解读的更多相关文章

  1. 令人作呕的OpenSSL

    在OpenSSL心脏出血之后,我相信非常多人都出了血,而且流了泪...网上瞬间出现了大量吐嘈OpenSSL的文章或段子,仿佛内心的窝火一瞬间被释放了出来,跟着这场疯闹,我也吐一下嘈,以雪这些年被Ope ...

  2. 讨厌OpenSSL

    在OpenSSL心脏出血后,.我相信很多人都出了血.而流下眼泪...瞬间出现在网上了很多吐槽OpenSSL文章还是那条,窝火一刻仿佛心脏被释放出来,按照这个忙疯了,我吐在嘈杂.在这些年被雪OpenSS ...

  3. 解读Scrapy框架

    Scrapy框架基础:Twsited Scrapy内部基于事件循环的机制实现爬虫的并发.原来: url_list = ['http://www.baidu.com','http://www.baidu ...

  4. 如何使用OpenSSL工具生成根证书与应用证书

    如何使用OpenSSL工具生成根证书与应用证书 一.步骤简记 // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认) openssl req -new -x509 -d ...

  5. 使用OpenSSL工具制作X.509证书的方法及其注意事项总结

    版权声明:本文为博主原创文章.转载请注明出处. https://blog.csdn.net/Ping_Fani07/article/details/21622545 怎样使用OpenSSL工具生成根证 ...

  6. 源代码方式向openssl中加入新算法完整具体步骤(演示样例:摘要算法SM3)【非engine方式】

    openssl简单介绍 openssl是一个功能丰富且自包括的开源安全工具箱.它提供的主要功能有:SSL协议实现(包括SSLv2.SSLv3和TLSv1).大量软算法(对称/非对称/摘要).大数运算. ...

  7. 密码学系列之:使用openssl检测网站是否支持ocsp

    目录 简介 支持OCSP stapling的网站 获取服务器的证书 获取OCSP responder地址 发送OCSP请求 一个更加简单的方法 总结 简介 OCSP在线证书状态协议是为了替换CRL而提 ...

  8. 创建私有CA,我就用openSSL

    目录 简介 搭建root CA 生成root CA 使用CRL 使用OSCP 总结 简介 一般情况下我们使用的证书都是由第三方权威机构来颁发的,如果我们有一个新的https网站,我们需要申请一个世界范 ...

  9. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

随机推荐

  1. mysql官网下载安装

    1.官网下载zip压缩文件 2.解压到指定文件夹 3.配置环境变量 4.新建my.ini 5.管理员权限打开cmd命令行,mysqld install mysql,mysql --initialize ...

  2. linux下安装maven私服nexus

    Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库 ...

  3. IBM和DoE推出世界上最快的超级计算机

    IBM和美国能源部的橡树岭国家实验室今天发布了该部门最新的超级计算机Summit.IBM声称峰会目前是世界上“最强大,最聪明的科学超级计算机”,其峰值性能每秒高达20万亿次.当新的榜单在本月晚些时候发 ...

  4. 配置jdpc连接池对象

  5. CDH6.3 Centos7

    按照官方文档安装即可 CentOS7 上搭建 CDH(6.3.0) 官方文档:https://docs.cloudera.com/documentation/enterprise/6/6.3/topi ...

  6. vfs的super block

    super block这个数据结构,乃至super block在磁盘上的位置,是哪里的规定? 没规定,1k偏移只是ext文件系统.但是像fat,它们第0扇区后就是保留扇区,但linux一样要识别它们. ...

  7. 每天一个linux命令:tail(16)

    tail tail命令用于输入文件中的尾部内容,不指定文件时,作为输入信息进行处理.tail命令默认在屏幕上显示指定文件的末尾10行.命令从指定点开始将文件写到标准输出,使用tail命令的-f选项可以 ...

  8. php 统计每天价格,货币种类,汇总得算法和数据处理 (后端和前段实现自动统计价格和币种类型)

    整体实现逻辑介绍 1.对查询数据做一个总体查询,需要根据查询自己主要业务逻辑数据. 2.对总体查询数据和时间和币种类型做三部分数据处理. 3.总体查询数据按照币种和日期组装二维数据对应得键值是价格. ...

  9. docker 应用

    在ubuntu安装docker 编写Dockerfile (用来操作容器) FROM java:8 #获取java官方镜像 jdk版本为1.8 VOLUME /tmp # 数据存储目录,容器退出后数据 ...

  10. pip install 报SSL异常和timeout异常

    在安装pip3 install virtualenv时报了SSL异常 如图 pip is configured with locations that require TLS/SSL, however ...