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:打印出使用信息。
-inform DER|PEM|P12|ENGINE
密钥输入格式;默认情况下未指定。有关详细信息,请参阅openssl-format-options。
-outform DER|PEM
密钥输出格式;默认值为PEM。有关详细信息,请参阅openssl-format-options。
私钥是SEC1私钥或PKCS#8格式。公钥是IETF RFC 3280中指定的SubjectPublicKeyInfo。
-in filename|uri
如果未指定此选项,则指定从中读取密钥的输入或标准输入。如果密钥已加密,将提示输入密码。
-out filename
这指定了要写入密钥的输出文件名,但未指定标准输出。如果设置了任何加密选项,则会提示输入密码。输出文件名不应与输入文件名相同。
-passin arg, -passout arg
输入和输出文件的密码源。有关arg格式的更多信息,请参阅openssl-passphrase-options。
-des|-des3|-idea
这些选项在输出私钥之前使用DES、3DES、IDEA或OpenSSL支持的任何其他密码对私钥进行加密,系统会提示输入密码。如果没有指定这些选项,则密钥将以纯文本形式编写。这意味着,使用此命令读取没有加密选项的加密密钥可用于从密钥中删除密码,或者通过设置加密选项,可用于添加或更改密码。这些选项只能用于PEM格式的输出文件。
-text
打印出公钥、私钥组件和参数。
-noout
此选项阻止输出密钥的编码版本。
-param_out
打印椭圆曲线参数。
-pubin
默认情况下,从输入文件读取私钥。使用此选项,将读取公钥。
-pubout
默认情况下,会输出私钥。使用此选项,将输出公钥。如果输入是公钥,则会自动设置此选项。
-conv_form arg
这指定了如何将椭圆曲线上的点转换为八位字节字符串。可能的值有:compressed/压缩(默认值)、uncompressed/未压缩和hybrid/混合。有关点转换形式的更多信息,请阅读X9.62标准。注意:由于专利问题,默认情况下,二进制曲线的压缩选项是禁用的,可以通过在编译时定义预处理器宏OPENSSL_EC_BIN_PT_COMP来启用。
-param_enc arg
这指定了椭圆曲线参数的编码方式。可能的值是:named_curve,即ec参数由OID指定,或者在显式给出ec参数的地方显式指定(有关ec参数结构的定义,请参阅RFC 3279)。默认值为named_curve。请注意,RFC 3279中指定的隐式CA替代方案目前尚未在OpenSSL中实现。
-no_public
此选项从私钥输出中省略公钥组件。
-check
此选项检查EC私钥或公钥的一致性。
-engine id
请参阅openssl中的“引擎选项”。此选项已弃用。
-provider name
-provider-path path
-propquery propq
请参阅openssl(OpenSSL命令手册)、provider(7)和property(7)中的“Provider Options/提供者选项”。
openssl-pkey命令能够执行此命令可以执行的所有操作,并支持其他公钥类型。
2、示例
openssl-pkey命令的文档包含与此处列出的示例等效的示例。
要使用3DES加密私钥,请执行以下命令:
openssl ec -in key.pem -des3 -out keyout.pem
要将私钥从PEM转换为DER格式,请执行以下命令:
openssl ec -in key.pem -outform DER -out keyout.der
要将私钥的组件打印到标准输出,请执行以下命令:
openssl ec -in key.pem -text -noout
只输出私钥的公共部分,请执行以下命令:
openssl ec -in key.pem -pubout -out pubkey.pem
要将参数编码更改为显式,请执行以下命令:
openssl ec -in key.pem -param_enc explicit -out keyout.pem
要将点转换形式更改为压缩形式,请执行以下命令:
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?