zoukankan      html  css  js  c++  java
  • openssl rsa/pkey

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


    openssl rsa和openssl pkey分别是RSA密钥的处理工具和通用非对称密钥处理工具,它们用法基本一致,所以只举例说明openssl rsa。

    它们的用法很简单,基本上就是输入和输出私钥或公钥的作用。

    openssl rsa [-in filename] [-passin arg] [-passout arg] [-out filename] [-des|-des3|-idea] [-text] [-noout] [-pubin] [-pubout] [-check]
    openssl pkey [-passin arg] [-passout arg] [-in filename] [-out filename] [-cipher] [-text] [-noout] [-pubin] [-pubout]
     
    【openssl rsa选项说明:】
    -in filename :指定密钥输入文件。默认读取的是私钥,若指定"-pubin"选项将表示读取公钥。将从该文件读取密钥,不指定时将从stdin读取。
    -out filename:指定密钥输出文件。默认输出私钥,若指定"-pubin""-pubout"选项都将输出公钥。不指定将输出到stdout。
    -pubin:指定该选项时,将显式表明从"-in filename"的filename中读取公钥,所以filename必须为公钥文件。
          :不指定该选项时,默认是从filename中读取私钥。公钥文件可以通过文件中的公钥标识符
          :"-----BEGIN PUBLIC KEY-----""-----END PUBLIC KEY-----"来辨别。
    -pubout:指定该选项时,将显示表明从"-in filename"的filename中提取公钥并输出,所以filename文件必须是私钥文件。
           :不指定该选项时,默认输出私钥。当设置了"-pubin"时,默认也设置了"-pubout"。
           :私钥文件可以通过文件中的私钥标识符"-----BEGIN PRIVATE KEY-----""-----END PRIVATE KEY-----"来辨别。
    -noout :控制不输出任何密钥信息。
    -text  :转换输入和输出的密钥文件格式为纯文本格式。
    -check :检查RSA密钥是否完整未被修改过,只能检测私钥,因为公钥来源于私钥。因此选项-"in filename"的filename文件只能是私钥文件。
    -des|-des3|-idea:加密输出文件,使得每次读取输出文件时都需要提供密码。
    -passin arg :传递解密密钥文件的密码。密码格式见openssl密码格式
    -passout arg:指定加密输出文件的密码。
    【openssl pkey选项说明:】
    -cipher:等价于openssl rsa的"-des|-des3|-idea",例如"-cipher des3"

    例如:

    (1).创建一个rsa私钥文件genrsa.pri,然后从中提取rsa公钥到rsa.pub文件中。

    [root@xuexi tmp]# openssl genrsa -out genrsa.pri
    
    [root@xuexi tmp]# openssl rsa -in genrsa.pri -pubout -out rsa.pub
    
    [root@xuexi tmp]# cat rsa.pub
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxitfLsvV58ogZr4hwdsEp7Mne
    hShLasCZsE10jGxQLsxoJ7FSBsrnZPB4GBSuwEEXazZdo7547QdLxe9vVL3+YSu3
    kPkd30tCTjf2HVywvj3ou2zgEdAIQTfQ0sODV6daO1bKZJxT1fIonEGuIQaefkqR
    TxTQOxLIcfR0gayvgQIDAQAB
    -----END PUBLIC KEY-----

    (2).创建一个加密的rsa私钥文件genrsaK.pri,然后从此文件输出公钥至文件rsaK.pub。

    [root@xuexi tmp]# openssl genrsa -out genrsaK.pri -des3 -passout pass:123456

    此时将提示输入密码才能读取该私钥文件。

    [root@xuexi tmp]# openssl rsa -in genrsaK.pri -pubout -out rsaK.pub
    Enter pass phrase for genrsaK.pri:

    可以使用"-passin"传递解密的密码。

    [root@xuexi tmp]# openssl rsa -in genrsaK.pri -pubout -out rsaK.pub -passin pass:123456

    (3).移除私钥文件或公钥文件的密码。只需直接输出到新文件即可。以已加密的私钥文件genrsaK.pri为例。

    [root@xuexi tmp]# openssl rsa -in genrsaK.pri -out genrsaNK.pri

    (4).check检测私钥文件的一致性,查看私钥文件被修改过。

    [root@xuexi tmp]# openssl rsa -in genrsaK.pri -check
    Enter pass phrase for genrsaK.pri:
    RSA key ok
    writing RSA key
    -----BEGIN RSA PRIVATE KEY-----
    MIICXAIBAAKBgQDAXX2ZwqCtcJXiR9xr7lJhslBybeAo07Q1jYK9IT0atbj72jj+
    3Eh5vbAjF0R5GF+luTBpGdhTVlt774oj+5m6zvkx785YpW9gRGroN9eglgvUu8iA
    9nY30ulIOTEmpi/TfSBVIBL+XbqZ2pLtr05t59RsLkBcqD7huLq28TODTwIDAQAB
    AoGALHWvMNl933g0/B6VwFBNtAzNcRUaCPWdIf955xKGl+TGQ1dVcvoguhpwWjvn
    dIGAocHigXgaunAsJsHfUJ+3EMJn7SeI25NDraSRdgH6XFK7yKg3ed5Oh4zLmZEx
    kEzh91jBkAwwM29/Vv0kbBiV6ZHH/zOxqkCylEaREQou4VECQQDjK6CrYtak+LR+
    LbALGSCWeugMU3h2vweNDmTBVwhbHJXe0inCxrBgK9AXSMstnfmcwH1GR/b1Hzdj
    U7TnImxpAkEA2McaDnRprd0pExHKeslyX93M/vUXRikr7H8pFke2lLmx8/HGVZHx
    erJj8V8sLIIGRc/j0wPoY6hpf67YEeBa9wJBANEPHVWcKBy6JKDaOuB7x1m00khF
    qN7e/nv5ew/SoIX40JO2pWfyoe5fY6mJ/DGG6GgxXRiIseTzTW3DYwAy1cECQFGz
    WIKyJVI91Ek3n1R/r/eppKVCwi7TPZa4pkebZ5jOE9+Y8+M0SgqwSTKjaAauSqbt
    HzRceK12v6w7vXufTykCQDoejWxVGsaxOW8H5D0+8dcF0JVW5hWljcBuvDd0aEJ0
    R4tGO1twXzO1dWBbIFJHHIot6W+V1g5CxVPS4QSsdXU=
    -----END RSA PRIVATE KEY-----

    现在随便修改下私钥文件,再检测。

    [root@xuexi tmp]# openssl rsa -in genrsaK.pri -check
    unable to load Private Key
    139890935146400:error:0906D066:PEM routines:PEM_read_bio:bad end line:pem_lib.c:802:

    一般来说,openssl rsa的常用选项就只有"-in filename"、"-out filename"、"-pubout"。

  • 相关阅读:
    2019/1/17 break语句小练习
    2019/1/17goto语句小试牛刀
    python 中* 和**的作用
    python 元组编码和解码问题
    python SMTP 发送邮件
    python 自定义异常
    python websocket client 使用
    excel、xls文件读写操作
    windows10局域网实现文件共享
    django入门
  • 原文地址:https://www.cnblogs.com/f-ck-need-u/p/6089790.html
Copyright © 2011-2022 走看看