openssl工具_编译openssl库时指定了no-asm,为何还需要ias工具呢 - CSDN
精华内容
参与话题
  • openssl工具列表

    2016-03-21 13:28:31
    OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广,包括: 创建和管理私钥、公钥。公钥加密操作。...
    
    OpenSSL介绍

    OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广,包括:

    • 创建和管理私钥、公钥。
    • 公钥加密操作。
    • 创建X.509证书(Certificate),证书请求(CSR),证书撤销(CRL)。
    • 计算消息摘要(MD5, SHA-1等)。
    • 使用密码加解密(Encryption/Decryption with Ciphers)。
    • SSL/TLS 客户端/服务器测试。
    • 处理S/MIME签名以及加密邮件。
    • 等等。

    openssl工具列表

    openssl的命令行格式为

    openssl command [ command_opts ] [ command_args ]
    

    其中command是openssl下辖的工具,而每个工具,又有其自己的命令行参数和选项。openssl中常用的工具如下:

    标准命令

    genrsa
    生成RSA密钥。RSA是主流浏览器都支持的一种加密算法。
    rsa
    RSA密钥管理。
    req
    X.509 CSR(Certificate Signing Request)
    x509
    X.509证书数据管理(X.509 Certification Data Management)。
    dgst
    计算消息摘要(Message Digest Calculation)。
    s_client
    作为SSL/TLS客户端运行。
    s_server
    作为SSL/TLS服务器运行。
    s_time
    SSL连接的性能测试。
    smime
    S/MIME处理。
    speed
    算法的速度测试。
    verify
    X.509证书验证。

    消息摘要命令

    包括著名的md5, sha1,其他的还有:md2, mdc2, rmd160, sha, sha224, sha256, sha384, sha512等。

    编码和加密命令(Encoding and Cipher)

    base64,bf(Blowfish Cipher), cast(CAST Cipher), des, des3, idea, rc2, rc4, rc5等。

    openssl技巧和使用说明

    个人认为openssl和UNIX传统的简单哲学相悖。UNIX的简单哲学是一个程序只做一件事,并做好,但openssl做了太多事,甚至于它下辖的一些工具,也有太多的选项和参数,容易让人混淆。

    openssl的工具名,和某些工具的选项名是一样的。例如openssl x509命令中的"x509"是X.509证书数据管理工具,但在如openssl req -x509这样的命令中,"-x509"是作为openssl req命令的一个选项。openssl完成一件事不止一种方法,应该说有很多方法。这样在不同的文档,例子中,就能看到做一件的许多方法,加上如工具名和选项名的相同,容易让人混淆。

    个人推荐的openssl学习方法是,学习各种示例;根据示例中用到的工具,以及工具的选项和参数,查看手册。

    获取完整的openssl工具列表

     $ openssl -h

    运行此命令,openssl会输出"openssl:Error: '-h' is an invalid command.",但不要理会,这就是完整的命令列表。同样的,获取某个工具的帮助:

     $ openssl genrsa -h

    获取openssl的版本信息

    $ openssl version
    $ openssl version -a
    

    openssl工具详解

    openssl genrsa

    openssl genrsa用于生成RSA私钥,基本格式:

     openssl genrsa -out file [numbits]

    numbits表示密钥长度,默认是512。测试:

     $ openssl genrsa -out s.key 1024

    查看密钥:

    $ less s.key 
    -----BEGIN RSA PRIVATE KEY-----
    MIICXwIBAAKBgQC7nLRFKJDh9gZKqixYYiUPt5EhWxU/k/or96Awu3QnTJiwXIX3
    IEe8BCwKX8CVpJpT1kvumuZf1kPjdb26iu+DeW88mm9q+2531hXLHdhM0UprPjN/
    3p6pDPGmCbqQM1jsw7ih11VodE5Skg6ICInMxwbw4i4ICK0v+nCIBaxvOQIDAQAB
    AoGBAJPjsiL2GEdW1ZzTykMdkpNyI4BEuVo1vrYb6/WePrCf65jSRnQIySNHsqO2
    2Svc5h6CRbbf+gu/7iIGdTnwPV5vOf0QGUnwjsoNn7bkjII0oBgsh7miYyvDT+nk
    d+6VH2gywbIBfamc6NoZ27XcQlYV4FuLQRVlU9Zd5LyEEcJlAkEA54JZ9X+M3cy3
    NVrHPTXaYZSjgUcZ2LoCRiTsowL00ijzO6qYPwuN5qwcYjBgWfl3JSUaU0HOqQtw
    tibCcO+Z1wJBAM91jGKxEqYFKg+8uOGkuksv+x9IhzavUOHtVGJF6lVebgqmReBN
    P2W8TTxkFykp+C7Fezj9BQcfYeiffOvTvW8CQQCU/I5oL224T8aXz5PpEH85zS5s
    RBWeJBbSjXC8d2qW1UOzYlYYPJdVm+2oQvm+7Yx/myEV84PLxlEC6G65v3iBAkEA
    s4BQ7J+rtAxp3V38VfiS3DVywhmeLLm6cRFJXxKBdEYVTo+ZjD8qaJtp9KPhylMv
    E0D5olCChiwoKf+9NctqbwJBALWHgc4eBN/5sBQ5JawVfkMAzWW3j1PDUU2aNftp
    7QVonE/cTfJLf//rNLy6lYwZH1l8/d3e+5ncaYFq61bw+ls=
    -----END RSA PRIVATE KEY-----
    

    缩短或增加numbits的值,可见输出私钥文件变短或增长。

    openssl req

    openssl req是一个 PKCS#10 证书签署请求和证书生成工具。

    在PKI(Public Key Infrastructure)系统中,证书签署请求(CSR)是应用给CA发送的消息,CA将为之生成数字证书(通常需要付费;也可以通过openssl生成自签名的证书)。CSR的格式通常为PKCS#10。

    PKCS(Public-Key Cryptography Standards)有很多种类,openssl工具集中也有一系列名为pkcs#x的工具。常见的如:

    1. PKCS#7,加密信息语法标准(Cryptography Message Syntax Standard)。用于签名或加密消息,是S/MIME的基石。
    2. PKCS#10,证书签署请求(CSR)。
    3. PKCS#12,个人信息交换语法标准(Personal Information Exchange Syntax Standard)。

    openssl req工具的参数非常之多:

    -new
    生成新的证书请求。如果没有 -key 参数,则会生成新的RSA私钥。
    -key file
    私钥文件。
    -nodes
    如果要生成私钥,则不对私钥加密(将命令理解为 no des)。
    -x509
    生成一个自签名证书,而非一个证书签署请求。

    以下列出一些openssl req的常见用法。

    生成证书签署请求(CSR)与生成证书

    方法1 :用openssl genrsa生成私钥,用openssl req生成证书签署请求:

    $ openssl genrsa -out s.key 1024
    $ openssl req -new -key s.key -out s.csr
    
    

    方法2 :用req生成私钥,并生成证书签署请求:

    $ openssl req -newkey rsa:1024 -keyout s.key -out s.csr -nodes
    

    注意,这里加了-nodes选项,否则要求输入密码保护私钥。接下来,可以把s.csr发送给CA请求签署证书,或者用openssl自签署。

    生成证书签署请求时,需要用户输入的信息:

    Country Name (2 letter code) [GB]:
    State or Province Name (full name) [Berkshire]:
    Locality Name (eg, city) [Newbury]:
    Organization Name (eg, company) [My Company Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    可以用-subj选项在命令行中写入这些信息。

    方法3 跳过CSR,直接生成证书:

    $ openssl req -x509 -nodes -days 365 \
        -subj '/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com' \
        -newkey rsa:1024 -keyout s.key -out s.crt
    

    这个命令与之前命令的区别:

    1. 使用了-x509,用于直接生成证书,而非证书签署请求(CSR)。是否带有-x509选项,是区分生成证书(有-x509),还是生成CSR(没有-x509)的判断依据。
    2. 使用了-subj,在命令行填入了信息。
    3. 使用了-days,限制了证书的有效期(-dyas 365表示:从生成证书之日起的365天内有效)。
    4. 输出了s.crt(含有公钥的证书),而非s.csr(请求)。
    5. 运行此命令输出2个文件:s.key(私钥), s.crt(证书/公钥)。

    可以查看.crt, .csr文件的内容。.crt文件的开始与结束为:

    -----BEGIN CERTIFICATE REQUEST-----
    -----END CERTIFICATE REQUEST-----
    

    .crt文件的开始与结束为:

    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
    

    验证CSR文件是否有效

    在把s.csr文件发送给CA(或自签署)之前,验证它是否正确:

    $ openssl req -nodes -days 365 \
        -subj '/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com' \
        -newkey rsa:1024 -keyout s.key -out s.csr
    $ openssl req -in s.csr -noout -verify -key s.key
    verify OK
    

    查看CSR文件的内容

    $ openssl req -in s.csr -noout -text
    Certificate Request:
        Data:
            Version: 0 (0x0)
            Subject: C=CN, ST=BeiJing, L=HaiDian, CN=www.berlinix.com
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                RSA Public Key: (1024 bit)
                    Modulus (1024 bit):
                        ....
                    Exponent: 65537 (0x10001)
            Attributes:
                a0:00
        Signature Algorithm: sha1WithRSAEncryption
            ...
    

    用s_server/s_client测试证书

    用s_server建立服务器:

     $ openssl s_server -cert s.crt -key s.key -www

    用s_client作为客户端:

     $ openssl s_client -connect localhost:4433

    openssl s_client的输出中有一些信息:

    verify error:num=18:self signed certificate     --> 发现是自签署证书
    subject=/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com      --> subject和issuer信息相同
    issuer=/C=CN/ST=BeiJing/L=HaiDian/CN=www.berlinix.com
    SSL-Session:                                --> 开启SSL会话 
    

    openssl实例

    获取证书

    获取远程服务器下发的证书(用sed过滤):

    $ openssl s_client -connect www.gmail.com:443 2>&1 |\
        sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
    

    性能测试

    使用s_time测试连接性能:

    $ openssl s_time -connect www.google.com:443
    No CIPHER specified
    Collecting connection statistics for 30 seconds
    
    192 connections in 0.15s; 1280.00 connections/user sec, bytes read 0
    192 connections in 31 real seconds, 0 bytes read per connection
    
    
    Now timing with session id reuse.
    starting
    
    282 connections in 0.05s; 5640.00 connections/user sec, bytes read 0
    282 connections in 31 real seconds, 0 bytes read per connection
    

    其他

    参考

    站内

    Apache https配置中,用到openssl。

    密码学入门 介绍到这篇笔记中常见的一些术语,如X.509, RSA等。

    ssl 介绍了SSL本身。

    站外

    openssl官方手册

    OpenSSL Command-Line HOWTO openssl的许多示例用法。

    展开全文
  • openssl工具简介

    千次阅读 2012-01-05 16:27:58
    一.openssl简介 ...OpenSSL是一套用于SSL/TLS协议的加密工具,其作用有: 1.生成私有密钥. 2.生成证书,即数字签名证书,它包含一个公有密钥,可以用来单向的加密和解密数据.即,使用公钥加密的数据

    一.openssl简介

    数据加密是信息信息传输中的一个重要组成部分.任何信息都以明文方式传输,确实是个很不安全的做法.所以,
    需要对数据进行加密.将明文数据转换为密文数据,再进行传输.

    OpenSSL是一套用于SSL/TLS协议的加密工具,其作用有:
    1.生成私有密钥.
    2.生成证书,即数字签名证书,它包含一个公有密钥,可以用来单向的加密和解密数据.即,使用公钥加密的数据,只能使用
    私有密钥解密.使用私钥加密的数据,可以使用公钥来解密.
    3.计算信息摘要.
    4.SSL/TLS客户端和服务器端测试.
    5.处理S/MIME标记和邮件的加密.

    二.加密技术简介.

    加密,即将明文数据转换为密文数据的过程.以起到对明文保密的作用.
    加密算法: 数据加密过程所采用的一种运算算法.用于将明文转换为密文.
    密钥: 加密算法通过与密钥进行某种运算,将明文数据进行加密,生成加密数据.解密时,加密算法通过密钥,
    将加密数据再转换为明文数据.
    现今的加密技术,加密算法是公开的,即所有人都知道加密所采用的运算方式.但只有使用密钥才能进行
    对密文的解密.所以,密钥的保护,是数据安全的核心.

    三.openssl工具使用简介

    1.私有密钥生成方法

    生成私有密钥,可以使用不同的数字签名算法.下面分别介绍;

    #采用DSA算法
    $ openssl dsaparam -noout -out dsakey0.pem -genkey 1024
    #采用RSA算法
    $ openssl genrsa -out rsakey0.pem 1024
    #采用RSA算法,并使用密码保护.在生成私钥时,需要输入一个密码,用于保护私钥.
    #在使用这个私钥进行加/解密操作时,也需要输入这个密码.
    $ openssl genrsa -des3 -out rsakey1.pem 1024

    2.公用密钥的生成方法

    根据私钥来生成公钥
    #生成dsa算法的公钥
    $ openssl dsa -in dsakey0.pem -pubout -out dsakey0-pub.pem
    #生成rsa算法的公钥
    $ openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem

    3.自签名证书的生成方法

    #产生DSA算法的证书
    $ openssl req -x509 -key dsakey0.pem -days 365 -out mycert-dsa.pem -new
    #产生RSA算法的证书
    $ openssl req -x509 -key rsakey0.pem -days 365 -out mycert-rsa.pem -new

    4.使用证书进行邮件加密

    我们的明文信件内容:

    $ cat test.txt
    111111
    222222
    333333
    444444
    aaaaaa

    使用证书对明文信件进行加密,输出到etest.txt文件:

    $ openssl smime   -encrypt -in test.txt -out etest.txt mycert-rsa.pem

    查看加密后的密文内容:

    $ cat etest.txt 
    MIME-Version: 1.0
    Content-Disposition: attachment; filename="smime.p7m"
    Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
    Content-Transfer-Encoding: base64
    
    MIIBYAYJKoZIhvcNAQcDoIIBUTCCAU0CAQAxgewwgekCAQAwUjBFMQswCQYDVQQG
    EwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lk
    Z2l0cyBQdHkgTHRkAgkAr71mh4NRX/UwDQYJKoZIhvcNAQEBBQAEgYCbrA1WBwQK
    Zj7TcNtrxiDzqMBc/Lu063SLKvBK6mQMqT+npFOOFtzIKdFVkldH0YyQhMZDSCyq
    YUtGwOaDw6Jn0AHRt64UwPOKoaeL9RVqp9vgtiFC/uXis5UeyZCWS1z7Jsih8Aa+
    Da/DQN0sOCX85OdK/TDewNx8mTaYBbVf4jBZBgkqhkiG9w0BBwEwGgYIKoZIhvcN
    AwIwDgICAKAECNxsgiJ2s+1ugDC6JknPL+rDYBCddcyPH+bMYjqrUP0hE/GQ5WSj
    sv8CDkOUdvY5XG440yiAL3Z3ysI=

    使用私钥进行解密,输出到dtest.txt文件:

    $ openssl smime  -decrypt -in etest.txt -inkey rsakey0.pem  -out dtest.txt

    查看解密后的信件内容,与原明文信件内容完全一致.

    $ cat dtest.txt 
    111111
    222222
    333333
    444444
    aaaaaa

    5.简单的文件加密

    明文文件内容:

    $ cat test.txt 
    1
    22
    333
    4444
    55555
    Hello

    加密明文文件,输出为test.enc文件,输入”123123”作为加密密码:

    $ openssl enc -aes-256-cbc -salt -in test.txt -out test.enc
    enter aes-256-cbc encryption password:
    Verifying - enter aes-256-cbc encryption password:

    对密文进行解密,输入”123123”作为解密密码:

    $ openssl enc -d -aes-256-cbc -in test.enc
    enter aes-256-cbc decryption password:
    1
    22
    333
    4444
    55555
    Hello

    6.简单的字符串加密

    采用base64方式进行加密:

    $ echo "encode me" | openssl enc -base64
    ZW5jb2RlIG1lCg==

    解密时,需要知道加密算法,才可解密:

    $ echo "ZW5jb2RlIG1lCg==" | openssl enc -base64 -d 
    encode me

    7.SSL客户端和服务器的测试

    使用私钥和证书启动SSL服务器,"-www”的作用是,当客户端连接服务器时,发送一个状态信息网页到客户端.

    openssl s_server -key mykey.pem -cert mycert.pem -www

    连接SSL服务器到,客户端会获得服务器的证书:

    openssl s_client -connect localhost:4433

    展开全文
  • openssl基础(一)命令行工具

    千次阅读 2019-10-14 22:12:04
      openssl是实现Transport Layer Security (TLS)和Secure ...openssl可以直接以命令行的方式使用,或者作为动态链接库在其他程序中使用。这篇博客先介绍命令行的使用方式。 查看可用命令 openssl list <o...

      openssl是实现Transport Layer Security (TLS)和Secure Sockets Layer (SSL) 协议的工具库,同时也是提供了通用密码算法,如对称密码,非对称密码,数字签名,消息摘要等等的密码库。openssl可以直接以命令行的方式使用,或者作为动态链接库在其他程序中使用。这篇博客先介绍命令行的使用方式。

    查看可用命令

    openssl list <option>
    

    option设置为-help可以查看所有合法的option

    january@vostro3470:~$ openssl list -help
    Usage: list [options]
    Valid options are:
     -help                   Display this summary
     -1                      List in one column
     -commands               List of standard commands
     -digest-commands        List of message digest commands
     -digest-algorithms      List of message digest algorithms
     -cipher-commands        List of cipher commands
     -cipher-algorithms      List of cipher algorithms
     -public-key-algorithms  List of public key algorithms
     -public-key-methods     List of public key methods
     -disabled               List of disabled features
     -missing-help           List missing detailed help strings
     -options val            List options for specified command
    
    

    测试命令是否可用

    openssl no-<command>
    

    如果command存在,则返回1,并打印<command>;如果command不存在则返回0,并打印no-<command>

    january@vostro3470:~$ openssl no-list
    list
    # 使用$?读取命令返回值
    january@vostro3470:~$ echo $?
    1
    january@vostro3470:~$ openssl no-ffff
    no-ffff
    january@vostro3470:~$ echo $?
    0
    january@vostro3470:~$ 
    
    

    口令生成秘钥

    口令生成秘钥,或者是主密钥生成子秘钥要通过Key Derivation Function(KDF)来实现。KDF的主要实现算法分别是pbkdf2、bcrypt、scrypt,目前openssl推荐使用pbkdf2。因此在使用口令加密时,需要加上选项-pbkdf2来使用pbkdf2算法生成秘钥,另外还可以使用选项-iter <interation times>指定迭代次数。秘钥生成算法和迭代次数需要在解密的时候使用,否则无法正确解密。

    短块填充模式

    对于分组加密算法,当需要加密的内容不足一个块时,一种解决方案就是将其填充到一个块大小,openssl采用pkcs7的填充方式。该方法流程如下:

    1. 计算短块相比正常块缺少字符,把该值记为c
    2. 给短块填充c个字节,每个字节的内容为c的值

    如果没有短块的话,就增加一整个块,块中每个字节的内容为块大小。该方法的支持不同长度的块,最大为255字节,即一个字节能表示的最大的数。

    pkcs5的填充和pkcs7的填充唯一的区别是pkcs5固定了块大小为8字节,而pkcs7可以支持不同大小的块

    pkcs即Public Key Cryptography Standards,是一些密码算法的标准文件,想了解的话参考维基百科PKCS

    对称加密

    使用aes-128-cbc进行PBE(password-based encryption)模式的加密,其中的-pbkdf2-iter 100就是指定口令生成秘钥算法(key derivation)的。

    january@vostro3470:~/Desktop/code_protection$ openssl aes-128-cbc -pbkdf2 -iter 100 -e -in key_file -out key_file.aes
    enter aes-128-cbc encryption password:
    Verifying - enter aes-128-cbc encryption password:
    
    january@vostro3470:~/Desktop/code_protection$ echo `cat key_file`
    lQodMJXiCRSJYS3S7P36kr1Mp8YfY58V9DoKxVfCUVM=
    
    january@vostro3470:~/Desktop/code_protection$ echo `cat key_file.aes`
    Salted__����کk����o�����iH����.P��� ���u���jl��q��!y��IL��
    
    january@vostro3470:~/Desktop/code_protection$ openssl aes-128-cbc -pbkdf2 -iter 100 -d -in key_file.aes -out key_file.aes.decrypt 
    enter aes-128-cbc decryption password:
    
    january@vostro3470:~/Desktop/code_protection$ cat key_file.aes.decrypt 
    lQodMJXiCRSJYS3S7P36kr1Mp8YfY58V9DoKxVfCUVM=
    
    

    非对称加密

    RSA

    秘钥生成

    生成私钥

    使用genrsa命令来生成私钥

    openssl genrsa [options] <key length>
    

    使用-out <key_file>将生成的秘钥保存到<key_file>文件

    january@vostro3470:~/Desktop/code_protection$ openssl genrsa -out private.pem 1024
    Generating RSA private key, 1024 bit long modulus (2 primes)
    ........................+++++
    ...............................+++++
    e is 65537 (0x010001)
    
    january@vostro3470:~/Desktop/code_protection$ cat private.pem 
    -----BEGIN RSA PRIVATE KEY-----
    MIICXQIBAAKBgQDY3Tcd96m79dJOkqdADPm88stNaBwYbS6DjvKneRIAsmoRYSVc
    wXVkI7vPeyMysY5HPLxIuvUAAja4cptyGV2LPM2x34qIIihvGJS7DRChrst7g47K
    PzOJIFByeuhP/9CJug5ZU25Te6mXGjvyHylpzns9af05iRBYRLFHGTUMVwIDAQAB
    AoGABZopW1fThayDA06cjXYIWY44HEbNOwBPDEz8DcF96pCxVsOYsH2655xYtLJs
    pVma4FI8VvCldZuZCEjFpTvsg6kejwtd6Rtpki26ssXxjtwvt+j4PNnfEu4Etixs
    cx/JPJiFrWxpRop3ZVOpNpBUaZHERkL4QtT+nobWqeW3LFECQQD1H7+n6dB3lSVv
    psNZYvoEzKrsMvSbj9ckptmMcKn2Rf6/XDhnY2bBQMcx3695JWjdk7OyHXkafawq
    3gkLwiNPAkEA4nx5tqbYbiPBhlIk99MIoPyINVoMDwKvjLpaT0yfMnb6m/8aaBTC
    uwYaS3kbjdNUOywu9G446Igo7ozRbQDkeQJADuW6ESttpwbiepGpB7KzPT1vGeHS
    6e1pBuo5CIcEXVpNrDWfm/D3msEkGgzdLkCuyeCjKC0QYiLHJufNpvBKkwJBAK50
    dQhlUhbcgefmBEXEj0P54S0/VESHrBM5Q/ELMyEbFoTspjl/rFOFKuHxwnCnVJ1T
    tkNfV4R9xRGi9HoDEvkCQQDX7krJLyLWnTVkgyT/Nif4XhDovLHAO+ORdIGF8l0H
    5esbi6DMv89iO8oqA6gQO2qxK5/yBw2ZCaEvquwjh5YH
    -----END RSA PRIVATE KEY-----
    
    

    生成公钥

    使用rsa命令来生成公钥

    openssl rsa -in <key_file> -pubout -out <pub_key>
    

    使用-in <file>选项指定输入文件,-pubout表示输出公钥,-out <file>指定输出文件

    january@vostro3470:~/Desktop/code_protection$ openssl rsa -in private.pem -pubout -out public.pem
    writing RSA key
    
    january@vostro3470:~/Desktop/code_protection$ cat public.pem 
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDY3Tcd96m79dJOkqdADPm88stN
    aBwYbS6DjvKneRIAsmoRYSVcwXVkI7vPeyMysY5HPLxIuvUAAja4cptyGV2LPM2x
    34qIIihvGJS7DRChrst7g47KPzOJIFByeuhP/9CJug5ZU25Te6mXGjvyHylpzns9
    af05iRBYRLFHGTUMVwIDAQAB
    -----END PUBLIC KEY-----
    
    
    

    加密

    使用rsautl命令来加密

     openssl rsautl -encrypt -pubin -in <file> -inkey <key_file> -out <file>
    
    

    -encrypt表示加密,-publin表示输入的秘钥文件为公钥,-inkey <key_file>指定用于加密的公钥文件
    -in <file>-out <file>指定加密操作的输入输出文件

    january@vostro3470:~/Desktop/code_protection$ openssl rsautl -encrypt -pubin -in key_file -inkey public.pem -out key_file.rsa
    
    january@vostro3470:~/Desktop/code_protection$ xxd key_file
    00000000: 6c51 6f64 4d4a 5869 4352 534a 5953 3353  lQodMJXiCRSJYS3S
    00000010: 3750 3336 6b72 314d 7038 5966 5935 3856  7P36kr1Mp8YfY58V
    00000020: 3944 6f4b 7856 6643 5556 4d3d            9DoKxVfCUVM=
    
    january@vostro3470:~/Desktop/code_protection$ xxd key_file.rsa 
    00000000: 7639 01e3 3854 2b7d 6c43 c009 a75f 10c2  v9..8T+}lC..._..
    00000010: a0c5 bb94 1828 1338 77a3 3e00 07a4 d429  .....(.8w.>....)
    00000020: f46c 833d 8191 aaeb c974 e2e2 7214 887b  .l.=.....t..r..{
    00000030: aea9 cfc7 7002 4d12 5d1b 6e52 4bb7 df50  ....p.M.].nRK..P
    00000040: f10e 57a5 2783 5afe 2fa0 90b7 af99 4db8  ..W.'.Z./.....M.
    00000050: 729c 2a94 0098 9806 f975 0251 9626 abe7  r.*......u.Q.&..
    00000060: 05d4 83f0 ce63 6f5a 36aa dce8 0dd0 1a93  .....coZ6.......
    00000070: 4a0d 7144 5f2b 259f e9d7 106b e048 dde1  J.qD_+%....k.H..
    
    

    解密

    使用rsautl命令解密

     openssl rsautl -decrypt -in <file> -inkey <key_file> -out <file>
    
    

    -decrypt表示解密,-inkey <key_file>指定用于解密的私钥文件,其他和加密类似

     january@vostro3470:~/Desktop/code_protection$ openssl rsautl -decrypt -inkey private.pem -in key_file.rsa -out key_file.rsa.decrypt
    
    january@vostro3470:~/Desktop/code_protection$ xxd key_file.rsa.decrypt 
    00000000: 6c51 6f64 4d4a 5869 4352 534a 5953 3353  lQodMJXiCRSJYS3S
    00000010: 3750 3336 6b72 314d 7038 5966 5935 3856  7P36kr1Mp8YfY58V
    00000020: 3944 6f4b 7856 6643 5556 4d3d            9DoKxVfCUVM=
    
    
    
    展开全文
  • OpenSSL工具

    2020-07-30 23:31:48
    强大的OpenSSL工具,关于使用它来生成RSA密钥对可参见博文:http://blog.csdn.net/bbld_/article/details/38777491
  • OpenSSL 使用openssl工具搭建私有CA

    千次阅读 2018-05-19 16:17:21
    SSL(安全套接层)是为网络通讯提供安全及数据完整性的一种安全协议,TLS(SSL的继承版本)与SSL在传输层对网络连接进行加密。SSL用以保障在数据传输的安全利用数据加密技术,可确保数据在网络上之传输过程中不会被窃取...

    SSL(安全套接层)是为网络通讯提供安全及数据完整性的一种安全协议,TLS(SSL的继承版本)与SSL在传输层对网络连接进行加密。

    SSL用以保障在数据传输的安全利用数据加密技术,可确保数据在网络上之传输过程中不会被窃取和监听。

    功能:机密性,认证,完整性,重放保护

    两阶段协议,分为握手阶段和应用阶段

    握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。

    应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

    OpenSSL

    OpenSSL:是ssl的开源项目

    三个组件:

        openssl: 多用途的命令行工具,包openssl

        libcrypto: 加密算法库,包openssl-libs

        libssl:加密模块应用库,实现了ssl及tls,包nss

    openssl命令:

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

    对称加密:openssl  enc  -e

        openssl enc -e -des3 -a -salt -intestfile   -out testfile.cipher//-a表示base64编码,-salt加盐添加杂质更安全,

        例给fstab加密
        

    对称解密:openssl enc -d

        openssl enc -d -des3 -a -salt –in testfile.cipher  -outtestfile

        例给fstab解密
        
    单向加密:openssl  dgst

        openssl dgst -md5 [-hex默认]/PATH/SOMEFILE

        openssl dgst -md5 testfile

    生成随机数 base64编码或16进制

        opensslrand -base64|-hex NUM

        NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
        例
        
        生成随机字符取出其中的8位字母或数字用作口令,8位长度的随机口令
        

    非对称加密:

        使用openssl生成密钥对公钥和私钥man genrsa

        生成私钥://指定私钥生成的文件是什么,位数是多少为了安全加一个600的权限。
     
    生成私钥命令如下图所示:          
      对私钥加密如下图所示:

     #openssl  rsa -in private.key -out private.key2 //对加密的私钥解密

    生成公钥:从私钥中提取公钥

        #openssl  rsa -in private.key-pubout  -out public.key

    二、CA实现双方安全交换公钥 搭建CA实验  用openssl向CA申请证书

    CentOS7当服务器,CentOS6当客户端,CentOS6向CentOS7申请证书

    参考CA的一个重要的配置文件搭建/etc/pki/tls/openssl.cnf,定义了管理CA的相关的信息CA_default ]

    dir 变量 存放CA的工作目录

    certs                  =$dir/certs   //专门放证书的

    crl                       =$dir/crl //放证书吊销列表

    database           =$dir/index.txt  //数据库索引文件记录了证书的状态啊编号啊以及都给谁颁发了证书默认不存在。需要手工创建,不创建会提示 缺少这个文件

    -------------------------------------------------------------------------------------------------------

    new_certs_dir  =$dir/newcerts     //存放新证书目录

    certificate          =$dir/cacert.pem //CA的证书文件

    serial                  =$dir/serial          //序列号下一个要颁发的证书编号  16进制数

    crlnumber         =$dir/crlnumber   //吊销证书的编号 需要手工创建

    crl                       =$dir/crl.pem         //吊销证书列表

    private_key      =$dir/private/cakey.pem//私钥文件的路径和名

    有效期,如下图所示,可人为指定

    策略匹配/不同的策略匹配程度不一致,比如CA国家城市,部门等,私有CA(三个必须一致)公有CA(可选)

    policy                =policy_match         //定义客户端和CA申请证书的时候它的信息是否和CA是必须匹配的

    搭建CA具体步骤:

    1.建立根CARoot CA(自己给自己颁发证书)

    1)生成私钥文件

            #(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem  4096)

    2)生成自签名证书 CA要有证书

            #openssl  req -new -x509  -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650

    //req:申请;-x509:自签名

    //查看证书内容  openssl x509 -in cacert.pem -noout  -text

    //图形方式 sz cacert.pem   改后缀crt

    2.用户服务器 申请证书

    1)生成私钥

            #(umask 077;openssl genrsa -out app.key 1024)

    2)生成证书申请文件

            #openssl  req  -new -key app.key  -out app.csr

    3)将申请文件发给CA

            #scp app.csr 172.21.109.25:/etc/pki/CA

    3.CA颁发证书--用自己的私钥签名

            #touch index.txt   //这个文件会自动更新

            #echo 0F > serial   //下一个要颁发的证书的编号

            #openssl ca -in app.csr -out certs/app.crt-days 100

    4.证书发送客户端

            #scp certs/app.crt 172.21.111.1:/data

    5.在应用软件中使用证书

     

    展开全文
  • 预备工具: 安装环境:Windows10旗舰版 -64位 + Microsoft Visual Studio2013 相关软件:vs2013、ActivePerl-5.24.3、openssl-1.0.1o.tar.g 下载地址:vs2013、ActivePerl-5.24.3、openssl-1.0.1o.tar.g 开始安装...
  • 包含OpenSSL工具和使用安装文档,简单的命令。。。。。
  • Windows安装使用Openssl

    万次阅读 2018-07-16 01:33:40
    1. OpenSSL官网 官方下载地址: https://www.openssl.org/source/ 2. Windows安装方法 OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具。例如 ...
  • Ubuntu安装openssl-devel

    万次阅读 2018-02-22 22:13:27
    需要安装openssl-devel,Github上的说明要用yum工具安装,反复安装不上,提示没有repos(回购),最后找到了方法。在Ubuntu系统里这是分开的两个,需要分开来安装:sudo apt-get install opensslsudo apt-get ...
  • 通常在安全性要求比较高的环境下,我们可以借助 OpenSSL 工具对打包后的数据进行加密,这样能进一步的保障数据的安全性。OpenSSL 使用密码方式加密或解密文件1. 使用 openssl 加密一个文件 (data.zip 为原始文件,...
  • mingw下编译openssl

    万次阅读 2013-08-20 10:15:36
    对mingw及类linux系统下命令行工具不熟,备忘在此  目的:在windows xp环境下,编译开源库openssl 环境:windows xp ,Mingw及自带msys工具openssl-1.0.0e 1.安装mingw(自带msys)  在 ...
  • openssl命令详解 常规方式 生成私钥(key文件) openssl genrsa -out client.key 4096 生成签名请求(csr文件) openssl req -new -key client.key -out client.csr 签发证书 openssl x509 -req -days 365 -in...
  • 移植openssl至嵌入式linux编译工具

    千次阅读 2015-05-05 18:04:49
    在编译ntp服务的时候,发现arm-linux编译工具链下没有openssl工具,便自己编译了一下,分享一下。 1. 官网下载源码:http://www.openssl.org/source/ 2. 编译: # tar -xvf openssl-0.9.8zf.tar.gz# cd openssl-...
  • Windows下openssl的下载安装和使用

    万次阅读 多人点赞 2015-06-01 10:02:39
    安装openssl有两种方式,第一种直接下载安装包,装上就可运行;第二种可以自己下载源码,自己编译。下面对两种方式均进行详细描述。 一、下载和安装openss 方法一:直接使用openssl安装包 Window 的openssl的安装包...
  • OpenSSL下载安装

    万次阅读 2018-08-28 23:06:01
    OpenSSL下载安装 1、下载OpenSSL OpenSSL下载地址:https://oomake.com/download/openssl 这个链接有Windows版和源码版最新版下载地址,可以满足Windows、LInux、Mac OS系统使用。 2、Windows系统安装OpenSSL ...
  • Windows7下使用mingw编译openssl

    千次阅读 2015-12-31 16:15:12
    Windows7下使用mingw编译openssl首先参考这篇文章安装mingw/minsys:http://blog.csdn.net/ubuntu64fan/article/details/8918808下面开始编译openssl for windows:打开minsys命令行工具:编译32位的版本:# source /...
  • Windows10+VS2017下安装和 编译openssl

    万次阅读 2017-06-02 14:43:36
    windows10+VS2017下安装和编译openssl库环境 windows10,64位 openssl解压目录:E:\mylib\openssl-1.0.2l openssl安装目录:E:\mylib\openssl ActivePer安装的位置:E:\Perl64 VS2017自带的VC++编译器 第一步:...
  • Windows10下安装OpenSSL

    万次阅读 多人点赞 2016-02-29 20:00:35
    做毕业设计需要用到OpenSSL,但在网上没找到比较理想的安装方法,因此我综合Windows系列的安装方法完成Windows10的方法 安装环境:Windows10专业版+VS2013 工具:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi,...
  • 如何使用openssl生成RSA公钥和私钥对

    万次阅读 2014-07-11 11:44:27
    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了。 首先需要进入openssl的交互界面,在命令行了输入openssl即可; 1)生成RSA私钥:...
  • 使用OpenSSL生成RSA公钥和私钥

    万次阅读 2018-11-01 15:02:32
    打开 openssl 文件夹下的 bin 文件夹,执行 openssl.exe 文件 生成 RSA 私钥,出现图中提示说明生成成功 genrsa -out rsa_private_key.pem 1024 ​​ ​​ ​​生成 RSA 公钥 rsa -in rsa_privat...
1 2 3 4 5 ... 20
收藏数 57,917
精华内容 23,166
关键字:

openssl工具