openssl-pkey

openssl-pkey

名称

openssl-pkey – public or private key processing command

概述

openssl pkey [-help] [-engine id] [-provider name] [-provider-path path] [-propquery propq] [-check] [-pubcheck] [-in filename|uri] [-inform DER|PEM|P12|ENGINE] [-passin arg] [-pubin] [-out filename] [-outform DER|PEM] [-cipher] [-passout arg] [-traditional] [-pubout] [-noout] [-text] [-text_pub] [-ec_conv_form arg] [-ec_param_enc arg]

描述

此命令处理公钥或私钥。它们可以在各种形式之间转换,并打印其组成部分。

命令语法

通用命令

  • -help

    帮助

  • -engine id

    指定engine id,这个选项已经废弃

  • -provider name

    指定provider name

  • -provider-path path

    provider的路径

  • -propquery propq

    provider中的属性

输入命令

  • -in filename|uri

    指定密钥文件的路径,如果不指定则从终端读取,如果有密码还会提示输入密码

  • -inform DER|PEM|P12|ENGINE

    读取的密钥格式

  • -passin arg

    指定读取密钥文件时的密码

  • -pubin

    默认情况下,从输入中读取私钥。使用此选项则改为读取公钥。如果输入不包含公钥但包含私钥,则使用其公钥部分(This option is automatically set if the input is a public key.)。
    实际测试指定这个选项时只读取公钥,不指定时私钥和公钥都会读取。

输出命令

  • -out

    指定要写入密钥的输出文件名,如果未指定此选项,则使用标准输出。如果没有指定-passout,则会提示输入密码。输出文件名不应与输入文件名相同。

  • -outform DER|PEM

    写入的密钥格式

  • -cipher

    加密私钥pem的算法。EVP_get_cipherbyname() 接受的任何算法名称都是可以接受的,例如 aes128。DER 输出不支持加密。

  • -passout arg

    指定写入密钥文件时的密码

  • -traditional

    写入密钥时使用PKCS#1格式,默认是PKCS#8格式。PKCS#1仅能存储RSA密钥,PKCS#8是对PKCS#1的升级可以支持多种算法密钥存储。
    所以并不是所有算法都支持-traditional选项,我测试的结果是指定-traditional选项时RSA会用PKCS#1格式,P-256会用CMP PKI Mesaage格式,SM2和Ed25519等较新的算法则完全不支持

  • -pubout

    输出公钥而不是私钥
    实际测试指定这个选项时只输出公钥,不指定时私钥和公钥都会输出,如果都有的话。

  • -noout

    不打印编码的私钥

  • -text

    除了编码版本外还以文本方式打印私钥的内容

  • -text_pub

    仅输出公钥的文本部分 (also for private keys). 输出PEM格式时不可用.

  • -ec_conv_form arg

    仅支持ECC算法

    This specifies how the points on the elliptic curve are converted into octet strings. Possible values are: compressed (the default value), uncompressed and hybrid. For more information regarding the point conversion forms please read the X9.62 standard. Note Due to patent issues the compressed option is disabled by default for binary curves and can be enabled by defining the preprocessor macro OPENSSL_EC_BIN_PT_COMP at compile time.
    曲线的点转换到字节组时的方法,可以是compressed (the default value), uncompressed and hybrid,因为专利问题binary curves默认是禁用压缩的。(啥是binary curves我也不懂)

  • -ec_param_enc arg

    仅支持ECC算法
    This specifies how the elliptic curve parameters are encoded. Possible value are: named_curve, i.e. the ec parameters are specified by an OID, or explicit where the ec parameters are explicitly given (see RFC 3279 for the definition of the EC parameters structures). The default value is named_curve. Note the implicitlyCA alternative, as specified in RFC 3279, is currently not implemented in OpenSSL.
    用于曲线参数的编码。编码参数必须是 named_curve 或 explicit 。默认值为 named_curve。
    使用named_curve时参数文件中只包含代表曲线的OID,使用explicit则包含定义曲线的参数的具体值(这些参数决定了不同的曲线,比如P-256和SM2的曲线参数是不同的)。

Views: 1

评论

发表回复