openssl-ec-chn命令手册

openssl-ec命令处理EC(Elliptic Curve,椭圆曲线) 密钥。使密钥可以在各种形式之间转换,并打印出其组件。注意:OpenSSL使用"SEC 1:椭圆曲线密码学(Elliptic Curve Cryptography)"中指定的私钥格式(http://www.secg.org/)。要将OpenSSL EC私钥转换为PKCS#8私钥格式,请使用openssl-pkcs8命令。

openssl-ec命令的使用方式如下:

openssl ec [-help] [-inform DER|PEM|P12|ENGINE] [-outform DER|PEM] [-in filename|uri] [-passin arg] [-out filename] [-passout arg] [-des] [-des3] [-idea] [-text] [-noout] [-param_out] [-pubin] [-pubout] [-conv_form arg] [-param_enc arg] [-no_public] [-check] [-engine id] [-provider name] [-provider-path path] [-propquery propq]

1、OPTIONS选项

-help:打印出使用信息。

diff 复制代码
-inform DER|PEM|P12|ENGINE

密钥输入格式;默认情况下未指定。有关详细信息,请参阅openssl-format-options。

diff 复制代码
-outform DER|PEM

密钥输出格式;默认值为PEM。有关详细信息,请参阅openssl-format-options。

私钥是SEC1私钥或PKCS#8格式。公钥是IETF RFC 3280中指定的SubjectPublicKeyInfo。

javascript 复制代码
-in filename|uri

如果未指定此选项,则指定从中读取密钥的输入或标准输入。如果密钥已加密,将提示输入密码。

cs 复制代码
-out filename

这指定了要写入密钥的输出文件名,但未指定标准输出。如果设置了任何加密选项,则会提示输入密码。输出文件名不应与输入文件名相同。

diff 复制代码
-passin arg, -passout arg

输入和输出文件的密码源。有关arg格式的更多信息,请参阅openssl-passphrase-options。

diff 复制代码
-des|-des3|-idea

这些选项在输出私钥之前使用DES、3DES、IDEA或OpenSSL支持的任何其他密码对私钥进行加密,系统会提示输入密码。如果没有指定这些选项,则密钥将以纯文本形式编写。这意味着,使用此命令读取没有加密选项的加密密钥可用于从密钥中删除密码,或者通过设置加密选项,可用于添加或更改密码。这些选项只能用于PEM格式的输出文件。

diff 复制代码
-text

打印出公钥、私钥组件和参数。

diff 复制代码
-noout

此选项阻止输出密钥的编码版本。

diff 复制代码
-param_out

打印椭圆曲线参数。

diff 复制代码
-pubin

默认情况下,从输入文件读取私钥。使用此选项,将读取公钥。

diff 复制代码
-pubout

默认情况下,会输出私钥。使用此选项,将输出公钥。如果输入是公钥,则会自动设置此选项。

diff 复制代码
-conv_form arg

这指定了如何将椭圆曲线上的点转换为八位字节字符串。可能的值有:compressed/压缩(默认值)、uncompressed/未压缩和hybrid/混合。有关点转换形式的更多信息,请阅读X9.62标准。注意:由于专利问题,默认情况下,二进制曲线的压缩选项是禁用的,可以通过在编译时定义预处理器宏OPENSSL_EC_BIN_PT_COMP来启用。

diff 复制代码
-param_enc arg

这指定了椭圆曲线参数的编码方式。可能的值是:named_curve,即ec参数由OID指定,或者在显式给出ec参数的地方显式指定(有关ec参数结构的定义,请参阅RFC 3279)。默认值为named_curve。请注意,RFC 3279中指定的隐式CA替代方案目前尚未在OpenSSL中实现。

diff 复制代码
-no_public

此选项从私钥输出中省略公钥组件。

diff 复制代码
-check

此选项检查EC私钥或公钥的一致性。

diff 复制代码
-engine id

请参阅openssl中的"引擎选项"。此选项已弃用。

diff 复制代码
-provider name
-provider-path path
-propquery propq

请参阅openssl( OpenSSL命令手册、provider(7)和property(7)中的"Provider Options/提供者选项"。

openssl-pkey命令能够执行此命令可以执行的所有操作,并支持其他公钥类型。

2、示例

openssl-pkey命令的文档包含与此处列出的示例等效的示例。

要使用3DES加密私钥,请执行以下命令:

cs 复制代码
openssl ec -in key.pem -des3 -out keyout.pem

要将私钥从PEM转换为DER格式,请执行以下命令:

cs 复制代码
openssl ec -in key.pem -outform DER -out keyout.der

要将私钥的组件打印到标准输出,请执行以下命令:

javascript 复制代码
openssl ec -in key.pem -text -noout

只输出私钥的公共部分,请执行以下命令:

cs 复制代码
openssl ec -in key.pem -pubout -out pubkey.pem

要将参数编码更改为显式,请执行以下命令:

cs 复制代码
openssl ec -in key.pem -param_enc explicit -out keyout.pem

要将点转换形式更改为压缩形式,请执行以下命令:

cs 复制代码
openssl ec -in key.pem -conv_form compressed -out keyout.pem

参考命令: openssl**(** OpenSSL命令手册),openssl-pkey(1),openssl-ecparam(1),openssl-dsa(1),openssl-rsa(1)

3、历史

在OpenSSL 3.0中,-engine选项已被弃用。

OpenSSL 3.0中从引擎加载的密钥不再支持-conv_form和-no_public选项。

***推荐阅读***

CentOS编译安装OpenSSL 3.3.1

OpenSSL命令手册

如何使用OpenSSL创建RSA证书文件?

openVPN服务器配置的31个关键点

巧用openVPN实现访问云资源池业务

openVPN客户端连接指南

配置openVPN使用用户名密码认证

手撸一个自动搭建openVPN服务器的SHELL脚本

openVPN配置实现客户端互访

在Ubuntu系统手撸一个自动搭建openVPN服务端的SHELL脚本

openVPN+SmartDNS=openDNS or smartVPN?