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  #产生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 30  \
    -keyout server.key -out server.crt  \
    -subj "/CN=TEST-ONLY ..."

 

 

总结:

   本知识来源于小布老师的openssl讲解,详细可以参考播布客搜小布老师的ssl教程。

 

posted @ 2017-06-08 17:36  放在垃圾桶里  阅读(553)  评论(0编辑  收藏  举报