一、OpenSSL命令工具应用

     1.Linux系统加密解密基于协议的开源实现:OpenSSL(基于ssl)GPG(基于pgp)

          OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

     2.OpenSSL组成:

           libencrypt库:加密解密协议;  libssl库:实现SSL库;openssl多用途命令行工具

           libencryptbssl库为开发者开发实现库调用

     3.OpenSSL命令组成:

  标准命令、消息摘要命令(dgst子命令)加密命令(enc子命令)

Standard commands

asn1parse         ca                ciphers           cms              

crl               crl2pkcs7         dgst              dh               

dhparam           dsa               dsaparam          ec               

ecparam           enc               engine            errstr           

gendh             gendsa            genpkey           genrsa           

nseq              ocsp              passwd            pkcs12           

pkcs7             pkcs8             pkey              pkeyparam        

pkeyutl           prime             rand              req              

rsa               rsautl            s_client          s_server         

s_time            sess_id           smime             speed            

spkac             ts                verify            version          

x509             


Message Digest commands (see the `dgst' command for more details)

md2               md4               md5               rmd160           

sha               sha1      

       

Cipher commands (see the `enc' command for more details)

aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb      

aes-256-cbc       aes-256-ecb       base64            bf               

bf-cbc            bf-cfb            bf-ecb            bf-ofb           

camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb 

camellia-256-cbc  camellia-256-ecb  cast              cast-cbc         

cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb        

des               des-cbc           des-cfb           des-ecb          

des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb      

des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb     

des-ofb           des3              desx              idea             

idea-cbc          idea-cfb          idea-ecb          idea-ofb         

rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc          

rc2-cfb           rc2-ecb           rc2-ofb           rc4              

rc4-40            seed              seed-cbc          seed-cfb         

seed-ecb          seed-ofb          zlib

         



二、OpenSSL多用途命令行工具

    1.OpenSSL完成对称加密:enc

           支持的算法:3des, aes, blowfish, towfish

               enc命令:

-:直接指明算法

-e:加密

-d:解密

-abase64 process the data.Base64编码格式,不指明则为二进制编码格式

-salt:加密时加入杂质

-in:加密文件

-out:输出文件

      加密:~]# openssl  enc  -e  -des3  -a  -salt  -in  fstab   -out fstab.ciphertext

      解密:~]# openssl  enc  -d  -des3  -a  -salt  -out  fstab   -in fstab.ciphertext

OpenSSL应用:Cipher commands详解_passwd

         

    2.OpenSSL完成单向加密

             工具:openssl dgst, md5sum, sha1sum, sha224sum, …

                      生成方式不同,但是加密算法相同则生成的特征码相同

            dgst命令:

                     ~]# openssl  dgst  -md5  /PATH/TO/SOMEFILE

OpenSSL应用:Cipher commands详解_passwd_02

 

    3.OpenSSL完成随机数生成

                   工具:openssl  rand,默认生成二进制格式,每次生成不同

OpenSSL应用:Cipher commands详解_openssl_03

~]# openssl  rand  -hex  NUM   采用十六进制编码

~]# openssl  rand  -base64 NUM   采用Base64编码格式

NUM:表示指明生成的随机数字的长度

Base64编码显示后"=="是其标准格式,真正使用时要去除

OpenSSL应用:Cipher commands详解_openssl_04

                 扩展:可以用一些命令如dd,从Linux系统上的随机数生成器读取随机数

  /dev/random:仅从熵池返回随机数;随机数用尽,阻塞;

 /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数(不安全),非阻塞;

熵池中随机数的来源:硬盘IO中断时间间隔;键盘IO中断时间间隔;

 

    4.OpenSSL完成生成用户加密密码:

              工具:passwd, openssl  passwd

   用法:openssl  passwd  -1  -salt  SALT

        1)-salt后面可以直接引用随机书生成

   [root@localhost ~]# openssl passwd -1 -salt $(openssl rand -hex 5)

OpenSSL应用:Cipher commands详解_openssl_05

       2)-后面能直接加算法,1表示passwd的加密算法为md5-base,可选项如下

OpenSSL应用:Cipher commands详解_passwd_06

       3)密码相同时候,所加SALT只要有一点不同就会产生雪崩效应

OpenSSL应用:Cipher commands详解_openssl_07

 

    5.OpenSSL完成公钥加密:

                工具:openssl  rsautl, gpg

       加密解密算法:RSA,ELGamal

       数字签名算法:RSA, DSA, ELGamal

      密钥交换算法:DH

 

    6.OpenSSL生成密钥对;genrsa

               # openssl  genrsa  NUM   -out  FILE

                      -out FILE:指明保存文件

                      NUM一般为1024的倍数

OpenSSL应用:Cipher commands详解_passwd_08

   注意:

          生成的密钥对也可以使用输出重定向导出到指定文件,但时此时的文件权限要仅为自己可读可写

      # (umask 077;openssl genrsa  NUM   -out  FILE)

          放在括号中的命令要放在子shell运行此进程,umask仅对子shell中的进程起作用,主进程无影响

OpenSSL应用:Cipher commands详解_openssl_09

 

    7.OpenSSL提取公钥

[root@localhost tmp]# openssl rsa -in Key_FILE   -pubout

OpenSSL应用:Cipher commands详解_passwd_10