说到OpenSSL,首先要提的是SSL。我们在日常上网的时候,恐怕没有人愿意被网络上的其他人监听到我们的上网行为。因此就需要一种协议为我们的网络通信保驾护航。SSL协议就是基于这样的工作背景开发的,能使用户跟服务器应用之间的通信不被***者窃听,并且始终对服务器进行认证,可选择的对用户进行认证。

    SSL协议通常建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的保密性。 

   s所谓加密,只不过是将明文通过某种机制转换成密文,网络通信时,使用的加密安全机制有:对称加密,公钥加密,单向加密。    

  对称加密的特性与缺陷:加密解密使用同一个密钥,将明文分割成固定大小的块,逐个进行加密。其缺陷在于通信双方要管理的密钥过多,而且密钥分发困难。其加密算法有:DES、3DES、AES。

  公钥加密的特性:密钥成对出现,其加密算法有:RSA、DSA。其用途有:一是用于身份认证:发送方使用自己的私钥加密数据,接收方使用与之公钥解密;二是用于密钥交换:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密。公钥在私钥中提取出来

  单向加密的特性:定向输出,有雪崩效应。其加密算法有:MD5、SHA1、SHA256、SHA384、SHA512。常用于提取数据的特征码。

   今年4月10号安全协议OpenSSL爆出本年度最严重的安全漏洞“心脏出血”。使人们开始重视这个开源协议。那么OpenSSL到底是什么呢?其实OpenSSL可以看作是SSL的库,由openssl多用途的命令行工具、公共加密库libcrypto、以及ssl协议库libssl三大组件组成。

    openssl多用途的命令行工具可用于实现对称加密

                        openssl enc -e -对称加密算法 -a -salt -in 需要加密的文件 -out 加密后的文件输出路径

例如,对/etc/fstab这个文件使用DES3算法加密: openssl enc -e -des3 -a -salt -in /etc/fstab -out /tmp/fstab 

wKiom1SFonugr1_xAAGcPZeL5G8013.jpg

加密结果:

OpenSSL入门基础之加密、解密_第1张图片

   解密:openssl enc -d -对称加密算法 -a -salt -in 需要解密的文件 -out 解密后的文件输出路径

例如,将上面加密的文件解密: openssl enc -d -des3 -a -salt -in /tmp/fstab -out /tmp/Fstab

wKiom1SFo-LgR1P8AAFEXNmHFG0852.jpg

解密结果:

OpenSSL入门基础之加密、解密_第2张图片

    还可以用于公钥加密中的密钥交换:(umask 077;openssl genrsa -out 输出私钥文件路径)

              从私钥中提取公钥: openssl rsa -in 私钥文件路径 -pubout

注:()表示命令在子shell中执行,umask 077 保证了私钥文件的访问权限

OpenSSL入门基础之加密、解密_第3张图片

wKioL1SFsROjSTPKAAKmSbXQWKQ011.jpg

    还可用于单向加密:openssl dgst -md5|-sha1 -out 文件输出路径 要加密的文件

例如,将/etc/passwd使用md5加密:openssl dgst -md5  -out /tmp/md5passwd /etc/passwd

wKiom1SFpoSA9RYTAAGmJaizMQk824.jpg

    还可以用于生成用户密码: openssl passwd -1 -salt SALT_STRING 用户密码

OpenSSL入门基础之加密、解密_第4张图片

    还可以用于生成随机数:openssl rand -hex 字节数

OpenSSL入门基础之加密、解密_第5张图片