精华内容
下载资源
问答
  • Linux openssl命令使用教程详解

    万次阅读 2018-09-03 15:07:47
    OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法,被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用,...

    OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法,被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用,所以该漏洞影响范围广大。

    OpenSSL有两种运行模式:交互模式和批处理模式。

    直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。

    OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。

    对称加密算法

    OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。

    非对称加密算法

    OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。

    信息摘要算法

    OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。

    密钥和证书管理

    密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。

    首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。

    在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。

    事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。

    实例

    1、消息摘要算法应用例子

    用SHA1算法计算文件file.txt的哈西值,输出到stdout:

    openssl dgst -sha1 file.txt

    用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt:

    openssl sha1 -out digest.txt file.txt

    用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin。签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中。

    openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt

    用dss1算法验证file.txt的数字签名dsasign.bin,验证的private key为DSA算法产生的文件dsakey.pem。

    openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt

    用sha1算法为文件file.txt签名,输出到文件rsasign.bin,签名的private key为RSA算法产生的文件rsaprivate.pem。

    openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt

    用sha1算法验证file.txt的数字签名rsasign.bin,验证的public key为RSA算法生成的rsapublic.pem。

    openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt

    2、对称加密应用例子

    对称加密应用例子,用DES3算法的CBC模式加密文件plaintext.doc,加密结果输出到文件ciphertext.bin。

    openssl enc -des3 -salt -in plaintext.doc -out ciphertext.bin

    用DES3算法的OFB模式解密文件ciphertext.bin,提供的口令为trousers,输出到文件plaintext.doc。注意:因为模式不同,该命令不能对以上的文件进行解密。

    openssl enc -des-ede3-ofb -d -in ciphertext.bin -out plaintext.doc -pass pass:trousers

    用Blowfish的CFB模式加密plaintext.doc,口令从环境变量PASSWORD中取,输出到文件ciphertext.bin。

    openssl bf-cfb -salt -in plaintext.doc -out ciphertext.bin -pass env:PASSWORD

    给文件ciphertext.bin用base64编码,输出到文件base64.txt。

    openssl base64 -in ciphertext.bin -out base64.txt

    用RC5算法的CBC模式加密文件plaintext.doc,输出到文件ciphertext.bin,salt、key和初始化向量(iv)在命令行指定。

    openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K 89D4B1678D604FAA3DBFFD030A314B29

    3、Diffie-Hellman应用例子

    使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数,输出保存到文件dhparam.pem

    openssl dhparam -out dhparam.pem -2 1024

    从dhparam.pem中读取Diffie-Hell参数,以C代码的形式,输出到stdout。

    openssl dhparam -in dhparam.pem -noout -C

    4、DSA应用例子应用例子

    生成1024位DSA参数集,并输出到文件dsaparam.pem。

    openssl dsaparam -out dsaparam.pem 1024

    使用参数文件dsaparam.pem生成DSA私钥匙,采用3DES加密后输出到文件dsaprivatekey.pem

    openssl gendsa -out dsaprivatekey.pem -des3 dsaparam.pem

    使用私钥匙dsaprivatekey.pem生成公钥匙,输出到dsapublickey.pem

    openssl dsa -in dsaprivatekey.pem -pubout -out dsapublickey.pem

    从dsaprivatekey.pem中读取私钥匙,解密并输入新口令进行加密,然后写回文件dsaprivatekey.pem

    openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin

    5、RSA应用例子

    产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem

    openssl genrsa -out rsaprivatekey.pem -passout pass:trousers -des3 1024

    从文件rsaprivatekey.pem读取私匙,用口令trousers解密,生成的公钥匙输出到文件rsapublickey.pem

    openssl rsa -in rsaprivatekey.pem -passin pass:trousers -pubout -out rsapubckey.pem

    用公钥匙rsapublickey.pem加密文件plain.txt,输出到文件cipher.txt

    openssl rsautl -encrypt -pubin -inkey rsapublickey.pem -in plain.txt -out cipher.txt

    使用私钥匙rsaprivatekey.pem解密密文cipher.txt,输出到文件plain.txt

    openssl rsautl -decrypt -inkey rsaprivatekey.pem -in cipher.txt -out plain.txt

    用私钥匙rsaprivatekey.pem给文件plain.txt签名,输出到文件signature.bin

    openssl rsautl -sign -inkey rsaprivatekey.pem -in plain.txt -out signature.bin

    用公钥匙rsapublickey.pem验证签名signature.bin,输出到文件plain.txt

    openssl rsautl -verify -pubin -inkey rsapublickey.pem -in signature.bin -out plain

    从X.509证书文件cert.pem中获取公钥匙,用3DES加密mail.txt,输出到文件mail.enc

    openssl smime -encrypt -in mail.txt -des3 -out mail.enc cert.pem

    从X.509证书文件cert.pem中获取接收人的公钥匙,用私钥匙key.pem解密S/MIME消息mail.enc,结果输出到文件mail.txt

    openssl smime -decrypt -in mail.enc -recip cert.pem -inkey key.pem -out mail.txt

    cert.pem为X.509证书文件,用私匙key,pem为mail.txt签名,证书被包含在S/MIME消息中,输出到文件mail.sgn

    openssl smime -sign -in mail.txt -signer cert.pem -inkey key.pem -out mail.sgn

    验证S/MIME消息mail.sgn,输出到文件mail.txt,签名者的证书应该作为S/MIME消息的一部分包含在mail.sgn中

    openssl smime -verify -in mail.sgn -out mail.txt

    展开全文
  • 使用OpenSSL转换X509 PEM与PFX证书openssl pkcs12 -in user.pfx -nodes -out server.pemopenssl rsa -in server.pem -out server.keyopenssl x509 -in server.pem -out server.crtopenssl pkcs12 -in public.pfx -...
    使用OpenSSL转换X509 PEM与PFX证书
    
    openssl pkcs12 -in user.pfx -nodes -out server.pem
    openssl rsa -in server.pem -out server.key
    openssl x509 -in server.pem -out server.crt


    openssl pkcs12 -in public.pfx -nodes -out client.pem
    openssl rsa -in client.pem -out client.key
    openssl x509 -in client.pem -out client.crt


    参考: http://blog.csdn.net/u014389822/article/details/48296957


    openssl s_server -cert server.crt -key server.key -CAfile cacert.crt -tls1_2 -accept 443
    openssl s_client -cert client.crt -key client.key -CAfile cacert.crt -tls1_2 -host 127.0.0.1 -port 443


    利用s_server的 -accept 将端口调整为443,重新用s_client连接测试,发现wireshark可以正常显示TLSv1.2协议内容。
    参考指令:

    sudo openssl s_server -cert demoCA/sslservercert.pem -key demoCA/sslserverkey.pem -CAfile demoCA/cacert.pem -tls1_2 -Verify 1 -accept 443

    openssl s_client -cert demoCA/sslclientcert.pem -key demoCA/sslclientkey.pem -CAfile demoCA/cacert.pem -tls1_2 -host 127.0.0.1 -port 443
    参考: http://blog.csdn.net/hknaruto/article/details/77332436

    证书制作过程
    http://blog.csdn.net/gx_1983/article/details/47866537
    展开全文
  • linux下openssl命令使用
  • openssl命令

    2017-07-14 11:13:54
    OpenSSL常用命令讲解
  • openssl命令使用

    千次阅读 2017-05-25 13:17:58
    查看openssl的安装包:

    查看openssl的安装包:
    [root@miner_k ~]# rpm -qa | grep openssl
    openssl-1.0.1e-48.el6_8.3.x86_64

    openssl的配置文件

    [root@miner_k ~]# rpm -ql openssl
    /etc/pki/CA             #工作目录
    /etc/pki/CA/certs       #客户端证书
    /etc/pki/CA/crl         #证书吊销列表
    /etc/pki/CA/newcerts    #新签署的证书
    /etc/pki/CA/private     #私钥存放位置
    /etc/pki/tls
    /etc/pki/tls/certs
    /etc/pki/tls/certs/Makefile  #redhat提供的使用make命令生成CA、签署证书等

    1.openssl下的子命令帮助:

    [root@miner_k ~]# openssl -h
    openssl:Error: '-h' is an invalid command.
    
    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              

    子命令的帮助手册查看:

    • 子命令和系统命令不冲突:
    [root@miner_k ~]# whatis ca
    ca                   (1ssl)  - sample minimal CA application
    ca-legacy            (8)  - Manage the system configuration for legacy CA certificates
    [root@miner_k ~]# man ca
    
    • 子命令和系统命令冲突
    [root@miner_k ~]# whatis passwd
    passwd               (1)  - update user's authentication tokens
    passwd [sslpasswd]   (1ssl)  - compute password hashes
    [root@miner_k ~]# man sslpasswd

    2. openssl 测试des的加密的速度

    [root@miner_k ~]# openssl speed des
    Doing des cbc for 3s on 16 size blocks: 9396926 des cbc's in 2.94s
    Doing des cbc for 3s on 64 size blocks: 2420945 des cbc's in 2.96s
    Doing des cbc for 3s on 256 size blocks: 607810 des cbc's in 2.96s
    Doing des cbc for 3s on 1024 size blocks: 152797 des cbc's in 2.98s
    Doing des cbc for 3s on 8192 size blocks: 18994 des cbc's in 2.95s
    Doing des ede3 for 3s on 16 size blocks: 3537558 des ede3's in 2.92s
    Doing des ede3 for 3s on 64 size blocks: 911650 des ede3's in 2.98s
    Doing des ede3 for 3s on 256 size blocks: 227075 des ede3's in 2.96s
    Doing des ede3 for 3s on 1024 size blocks: 56604 des ede3's in 2.95s
    Doing des ede3 for 3s on 8192 size blocks: 7090 des ede3's in 2.96s
    OpenSSL 1.0.1e-fips 11 Feb 2013
    built on: Tue Sep 27 12:27:19 UTC 2016
    options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
    compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
    The 'numbers' are in 1000s of bytes per second processed.
    type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
    des cbc          51139.73k    52344.76k    52567.35k    52504.74k    52745.37k
    des ede3         19383.88k    19579.06k    19638.92k    19648.30k    19622.05k

    3. 对称加密与解密

    加密:

    [root@miner_k ~]# openssl enc -des3 -salt -a -in passwd -out passwd.dsc3
    enter des-ede3-cbc encryption password:
    Verifying - enter des-ede3-cbc encryption password:
    [root@miner_k ~]# ls passwd
    passwd       passwd.dsc3  

    解密:

    [root@miner_k ~]# openssl enc -d -des3 -salt -a -in passwd.dsc3 -out passwd

    参数:

    enc 对称加密
    -des3 加密算法
    -salt 使用的加密的盐
    -a base64 process the data
    -in 需要加密的文件
    -out 输出的文件

    4.查看校验码(提取特征码)

    [root@miner_k ~]# md5sum passwd
    497a36ebc9cb278e74ffa07cc4a98ac1  passwd
    
    [root@miner_k ~]# sha1sum passwd
    2ee237104e448eac368e9e86fd69e298955b4a89  passwd
    
    [root@miner_k ~]# openssl dgst -sha1 passwd
    SHA1(passwd)= 2ee237104e448eac368e9e86fd69e298955b4a89
    [root@miner_k ~]# openssl dgst -md5 passwd
    MD5(passwd)= 497a36ebc9cb278e74ffa07cc4a98ac1

    5.加密密码

    [root@miner_k ~]# openssl passwd -1
    Password: 
    Verifying - Password: 
    $1$S98LGqIe$jfx3pyQV41eM9Co4zEFle1
    
    
    通过命令可以看出密码
    [root@miner_k ~]# openssl passwd -1 -salt S98LGqIe
    Password: 
    $1$S98LGqIe$jfx3pyQV41eM9Co4zEFle1

    参数:
    -1 MD5加密
    -salt 加密的盐

    6.生成随机数

    [root@miner_k ~]# openssl rand -base64 16
    hAEtkTbvKCZuk8LuESHq2g==
    [root@miner_k ~]# openssl rand -base64 12
    slWW8NfrEf5tYYcp

    7.非对称加密

    展开全文
  • openssl命令中文版

    2018-09-07 23:19:24
    openssl命令中文版。
  • openssl命令详解

    2009-08-06 15:10:39
    openssl命令详解, 介绍openssl 常用命令及使用方法
  • Linux中openssl命令使用

    千次阅读 2016-07-29 15:52:52
    Linux中openssl命令使用  openssl是一个用C语言实现的SSL协议软件包,Linux可以使用openssl进行一些命令行操作,下面的三个功能是经常用到的。  1、base64编码  给文件text.txt用base64编码,结果输出到base64....

                                                                      Linux中openssl命令的使用

            openssl是一个用C语言实现的SSL协议软件包,Linux可以使用openssl进行一些命令行操作,下面的三个功能是经常用到的。
      1、base64编码
      给文件text.txt用base64编码,结果输出到base64.txt中的命令:
      openssl base64 -e -in text.txt -out base64.txt
      相应的base64解码的命令如下:将base64.txt解码到books.txt这个文件中:
      openssl base64 -d -in base64.txt -out books.txt
       2 、计算哈希值,校验文件的一致性。方法有很多,比如 sum、cksum、md5sum、sha1sum等,sum和cksum适用于比较简单的场合,md5sum有安全漏洞,sh1sum跨平台性不好,因此openssl是最好的选择。命令使用方法如下:
      openssl dgst -sha1 filename 或 openssl sha1 filename
      3、openssl支持很多加密解密的算法,如AES、DES、RC2、RC5等,这里举例说明使用DES这种方法的加解密命令:
      openssl enc -des -e -a -in filename -out filename2      (加密)
      openssl enc -des -d -a -in filename2 -out filename      (解密)
    但是每次运行这个命令都要手动输入秘钥,有个方式可以不用每次都输入,只设置一次就可以,特别是在程序中,命令如下:
      openssl enc -des -e -a -pass pass:123 -in filename -out filename2 (这里设置的秘钥是123,可随意设置)
      openssl enc -des -d -a -pass pass:123 -in filename2 -ont filename (解密)
    展开全文
  • OpenSSL命令系列

    2017-08-24 10:14:06
    openssl命令的格式是”openssl command command-options args”,command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令都有各自的功能,大部分command都...
  • OpenSSL命令解释

    2014-02-21 09:51:12
    OpenSSL+命令翻译 很实用 全在实战中运用到 简单易懂
  • openssl 命令(1): openssl req 命令详解

    万次阅读 2018-09-11 11:13:16
    本文就主要记录一下openssl命令选项的意义,并记录一下简单的命令示例。 首先说明下生成证书请求需要什么:申请者需要将自己的信息及其公钥放入证书请求中。但在实际操作过程中, 所需要提供的是私钥而非公钥,因为...
  • openssl命令的格式是”openssl command command-options args”,command部分有很多种命令,这些命令需要依赖于openssl命令才能执行,所以称为伪命令(pseudo-command),每个伪命令都有各自的功能,大部分command都...
  • Mac Openssl命令

    2019-10-11 09:09:36
    注意:命令和值之间最好只有一个空格符,不然openssl会吧多余的空格当成命令或值得一部分,导致出错 消息摘要 openssl dgst -md5 1.txt //输出到stdout openssl md5 1.txt //输出到stdout openssl md5 -out 3....
  • openssl 是一个用来从 shell 中调用 OpenSSL 加密库提供的多种密码学函数的命令行工具。 像下面这样运行 openssl ...如果你想要生成 10 个 14 字符长的随机强密码,将 openssl 命令与 for 循环结合起来使用。 $ for...
  • 介绍如何使用openssl命令自建CA,生成证书和私钥,命令简洁
  • openssl 命令(3): openssl x509命令详解

    万次阅读 2018-09-14 09:19:23
    openssl x509工具不会使用openssl配置文件中的设定,而是完全需要自行设定或者使用该伪命令的默认值,它就像是一个完整的小型的CA工具箱。 主要选项: -in filename : #指定证书输入文件,若同时指定了"-req...
  • OpenSSL命令详解(一)——标准命令

    万次阅读 2017-02-06 00:06:25
    ref: ...http://blog.csdn.net/scuyxi/article/details/54898870OpenSSL命令分为以下3个部分。 标准命令Standard commands1. asn1parse:asn1parse用于解释用ANS.1
  • linux下openssl命令详解

    万次阅读 2017-01-12 17:31:34
    1,openssl命令总览 2,证书应用 3,RSA应用 4,SHA1 应用 5,base64应用 6,des3应用 1,OpenSSl命令总览 语法格式: openssl command [ command_opts ] [ command_args ] 常用command: version 用于...
  • openssl常用命令

    2011-09-08 15:35:49
    openssl常用命令 openssl常用命令 openssl常用命令

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,197
精华内容 46,078
关键字:

openssl命令使用