当前位置:   article > 正文

OpenSSL 基础命令_openssl命令用法

openssl命令用法

OpenSSL功能之强大,命令组合用法之多,往往让我们的学习不知所措。在此,我们来对openssl命令的使用做一个总结。

OpenSSl命令总览:

语法格式:

openssl command [ command_opts ] [ command_args ]


常用command:

  1. version    用于查看版本信息
  2. enc        用于加解密
  3. ciphers    列出加密套件
  4. genrsa     用于生成私钥
  5. rsa        RSA密钥管理(例如:从私钥中提取公钥)
  6. req        生成证书签名请求(CSR)
  7. crl        证书吊销列表(CRL)管理
  8. ca         CA管理(例如对证书进行签名)
  9. dgst       生成信息摘要
  10. rsautl     用于完成RSA签名、验证、加密和解密功能
  11. passwd     生成散列密码
  12. rand       生成伪随机数
  13. speed      用于测试加解密速度                    
  14. s_client   通用的SSL/TLS客户端测试工具
  15. X509       X.509证书管理
  16. verify      X.509证书验证
  17. pkcs7       PKCS#7协议数据管理

OpenSSL命令---version:
用途:

version命令用来打印版本以及openssl其他各种信息。

用法:

openssl version [-a] [-v] [-b] [-o] [-f] [-p] [-d]


选项说明:

  1. -a:打印所有信息。
  2. -v:仅打印版本信息
  3. -b:打印当前版本构建的日期
  4. -o:库构建时的相关信息
  5. -f:编译参数
  6. -p:平台信息
  7. -d: 列出openssl的安装目录


OpenSSL命令---enc:
用途:

对称加密算法工具。它能够运用块或流算法对数据进行加解密。还能够将加解密的结果进行base64编码。

用法:

  1. openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] 
  2. [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt]
  3. [-salt] [-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] 
  4. [-engine id]

选项说明:

  1. -ciphername:对称算法名称,此命令有两种使用方式:-ciphername方式或者省略enc直接使用ciphername。
  2. -in filename:要加密/解密的输入文件,默认为标准输入。
  3. -out filename:要加密/解密的输出文件,默认为标准输出。
  4. -pass arg:输入文件如果有密码保护,指定密码来源。
  5. -e:进行加密操作,默认操作。可以省略
  6. -d:进行解密操作。
  7. -a:使用base64编码对加密结果进行处理。加密后进行base64编码,解密前进行base64解密。
  8. -base64:同-a选项。
  9. -A:默认情况下,base64编码为一个多行的文件。使用此选项,可以让生成的结果为一行。解密时,必须使用同样的选项,否则读取数据时会出错。
  10. -k:指定加密口令,不设置此项时,程序会提示用户输入口令。
  11. -kfile:指定口令存放文件。可以从这个口令存放文件的第一行读取加密口令。
  12. -K key:使用一个16进制的输入口令。如果仅指定-K key而没有指定-k password,必须用-iv选项指定IV。当-K key和-k password都指定时,用-K选项给定的key将会被使用,而使用password来产生初始化向量IV。不建议两者都指定。
  13. -iv IV:手工指定初始化向量(IV)的值。IV值是16进制格式的。如果仅使用-K指定了key而没有使用-k指定password,那么就需要使用-iv手工指定IV值。如果使用-k指定了password,那么IV值会由这个password的值来产生。
  14. -salt:产生一个随机数,并与-k指定的password串联,然后计算其Hash值来防御字典攻击和rainbow table攻击。

       rainbow table攻击:用户将密码使用单向函数得到Hash摘要并存入数据库中,验证时,使用同一种单向函数对用户输入口令进行Hash得到摘要信息。将得到的摘要信息和数据中该用户的摘要信息进行比对,一致则通过。考虑到多数人使用的密码为常见的组合,攻击者可以将所有密码的常见组合进行单向Hash,得到一个摘要组合。然后与数据库中的摘要进行比对即可获得对应的密码。

      salt将随机数加入到密码中,然后对一整串进行单向Hash。攻击者就很难通过上面的方式来得到密码。

  1. -S salt:使用16进制的salt。
  2. -nosalt:表示不使用salt。
  3. -z:压缩数据(前提是OpenSSL编译时加入了zip库)。
  4. -md:指定摘要算法。如:MD5  SHA1  SHA256等。
  5. -p:打印出使用的salt、口令以及初始化向量IV。
  6. -P:打印出使用的salt、口令以及IV,不做加密和解密操作,直接退出。
  7. -bufsize number:设置I/O操作的缓冲区大小。因为一个加密的文件可能会很大,每次能够处理的数据是有限的。
  8. -nopad:没有数据填充(主要用于非对称加密操作)。
  9. -debug:打印调试信息。
  10. -none:不对数据进行加密操作。
  11. -engine:指定硬件引擎。

注意: 密码可以用来产生初始化密钥key和初始化向量IV。

       新版的OpenSSL必须使用-salt选项。

OpenSSL支持的加密算法:des  des3  bf  cast cast5 rc2 rc4 rc5 aes等

使用实例:

对文件进行base64编码

  1. # which ls
  2. # cp /bin/ls .
  3. # file ls
  4. # openssl base64 -in ls -out ls.b64
  5. # file ls.b64
  6. 对base64编码文件进行解码:
  7. # rm -rf ls
  8. # openssl base64 -d -in ls.b64 -out ls
  9. # file ls
  10. 使用des3加密文件并在密码结果中加入salt:
  11. # echo "Hello World" >file.txt
  12. # cat file.txt
  13. # openssl des3 -salt -k 123456 -in file.txt -out file.des3
  14. # cat file.des3
  15. 使用des3解密文件,并使用-k指定密码:
  16. # openssl des3 -d -salt -k 123456 -in file.des3 -out file2.txt
  17. # cat file2.txt
  18. 使用bf算法加密文件,并将加密结果进行base64编码:
  19. # openssl bf -a -salt -k 123456 -in file.txt -out file.bf
  20. # file file.bf
  21. # cat file.bf
  22. 先用base64解码文件,再解密:
  23. # openssl bf -d -salt -a -k 123456 -in file.bf -out file3.txt
  24. # cat file3.txt
  25. 从密码文件中读取密码进行加解密:
  26. # echo "123456" >123.txt
  27. # cat 123.txt
  28. # openssl des3 -salt -kfile 123.txt -in file.txt -out file.des3      //加密
  29. # cat file.des3
  30. # openssl des3 -d -salt -k 123456 -in file.des3 -out file2.txt       //解密
  31. # cat file2.txt
  32. # openssl des3 -d -salt -kfile 123.txt -in file.des3 -out file3.txt  
  33. # cat file3.txt
  34. # echo "654321" >>123.txt
  35. # cat 123.txt
  36. # openssl des3 -salt -kfile 123.txt -in file.txt -out file3.des3
  37. # cat file3.des3
  38. # openssl des3 -d -salt -k 654321 -in file3.des4 -out file4.txt
  39.    //解密失败 因为kfile只会读取密码文件的第一行作为密码进行加密
  40. # openssl des3 -d -salt -k 654321 -in file3.des4 -out file4.txt
  41. # cat file4.txt
  42. 加密文件并进行压缩
  43. # dd if=/dev/zero of=/tmp/123 bs=100M count=10     //生成一个100M的文件
  44. # openssl des3 -salt -k 123456 -in 123 -out 123.des3    //普通加密
  45. # openssl des3 -salt -k 123456 -z -in 123 -out 123.des3.z   //带压缩的加密
  46. # du -sh /tmp/123  /tmp/123.des3  /tmp/123.des3.z      //比较文件大小
  47. 打印salt、key和IV的信息:
  48. # rm -rf 123.des3
  49. # openssl des3 -salt -k 123456 -p -in 123 -out 123.des3        //打印信息 并加密
  50. # openssl des3 -salt -k 123456 -P -in 123 -out 123.des3.P     //仅打印信息 不加密

OpenSSL命令---ciphers:
用途:

用来展示加密算法套件的工具。它能够把所有OpenSSL支持的加密算法按照一定规律排列(一般是加密强度)。

用法:

openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]


选项说明:

  1. -v:详细列出所有加密套件。包括SSL版本(SSLv2、SSLv3以及TLS)、密钥交换算法、身份验证算法、对称算法、摘要算法以及该算法是否允许出口。
  2. -ssl2:只列出sslv2使用的加密套件。
  3. -ssl3:只列出sslv3使用的加密套件。
  4. -tls1: 只列出tls使用的加密套件。
  5. cipherlist:列出一个cipher list的详细内容。此项能列出所有符合规则的加密套件,如果不加-v选项,它只会显示各个套件名称。

cipherlist格式:

 openssl ciphers ‘cipherstring1:cipherstring2.....'
          1)可以显示一个或多个cipher string套件。多个cipher string直接使用分隔符分割。

          2)分隔符:通常使用冒号(:)分割,也可以使用逗号或空格来分割。

          3)每一个cipher string前面都可以加上!、-、+

            -:表示将这个cipher从List中删除。以后也可以选择再添加回来。

            +: 表示将这个cipher移动到List的底部

               注意:这个选项不是添加任何新的cipher,而只是移动匹配到的cipher。

            !:表示将这个cipher从List中永久删除。

          4)@STRENGTH 表示使用加密算法key的长度进行排序。使用实例:

  1. # openssl ciphers -h          //列出ciphers参数简要帮助
  2. # openssl ciphers -v -ssl2 
  3. # openssl ciphers -v -ssl3
  4. # openssl ciphers -v -tls1
  5. # openssl ciphers 'SHA1'     //列出所有使用SHA1算法的套件
  6. # openssl ciphers 'SSLv3'    //列出SSLv3所使用的算法
  7. # openssl ciphers 'SHA1+DES'  //列出所有包含SHA1和DES的套件
  8. # openssl ciphers -v 'ALL:eNULL' //详细列出所有非加密算法
  9. # openssl ciphers -v 'ALL:!ADH:@STRENGTH' //列出所有不包含匿名DH的算法并排序
  10. # openssl ciphers -v '3DES:+RSA' //仅列出包含3DES和RSA算法的套件且将包含RSA的显示在底部

OpenSSL命令---genrsa:
用途:

用来产生RSA私钥。

用法:

  1. openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] 
  2. [-rand   file(s)] [-engine id] [numbits]

选项说明:

  1. -out fiename: 指定输出文件。如果没有设定此选项,将会输出到标准输出。
  2. -passout arg: 指定密码来源。
  3. -des|-des3|-idea:用来加密私钥文件的三种对称加密算法。
  4. -F4|-3:指定指数。-f40x1001  
  5. -rand file(s):指定随机种子。
  6. -engine id:硬件引擎。
  7. numbits:  生成的密钥位数。必须是本指令的最后一个参数。默认为512bits。

使用实例:

# openssl genrsa -des3 -out prikey.pem -f4 1024



-----------------------------------
转载于:https://blog.51cto.com/shjia/1427138

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/308394
推荐阅读
相关标签
  

闽ICP备14008679号