openssl-genpkey
名字
openssl-genpkey – generate a private key or key pair
概述
openssl genpkey [-help] [-out filename] [-outpubkey filename] [-outform DER|PEM] [-verbose] [-quiet] [-pass arg] [-cipher] [-paramfile file] [-algorithm alg] [-pkeyopt opt:value] [-genparam] [-text] [-rand files] [-writerand file] [-engine id]
[-provider name] [-provider-path path] [-propquery propq] [-config configfile]
描述
这个命令可以生成私钥或密钥对
命令语法
- -help
帮助
-
-out
指定要写入密钥的输出文件名,如果未指定此选项,则使用标准输出。如果设置了任何加密选项,则会提示输入密码。输出文件名不应与输入文件名相同。
-
-outpubkey filename
把公钥写入到指定的文件,不指定时不生成公钥
-
-outform DER|PEM
输出格式,除非指定-genparam,否者默认是PEM格式
当指定-genparam时-outform选项忽略 -
-verbose
显示寻找素数的状态点
-
-quiet
不显示寻找素数的状态点
-
-pass arg
输出文件的密码来源,参考:https://docs.openssl.org/3.4/man1/openssl-passphrase-options/#pass-phrase-option-arguments
-
-cipher
加密私钥的算法
-
-algorithm alg
公私钥算法,可以是RSA, DSA, DH, DHX,如果使用此选项,必须首先存在-pkeyopt 选项选项 -paramfile 和 -algorithm 是互斥的。Engines or providers可能会添加除标准内置算法之外的算法。
生成私钥时可用的算法包括 RSA, RSA-PSS, EC, X25519, X448, ED25519 and ED448.
生成参数(-genparam option)时可用的算法包括 DH, DSA and EC.
请注意,算法名称 X9.42 DH 可用作 DHX 密钥的同义词,PKCS#3 指的是 DH 密钥。DH 和 DHX 密钥之间不共享某些选项。 -
-pkeyopt opt:value
公钥算法的opt选项值。支持的选项的精确集合取决于所使用的公钥算法及其实现。有关更多详细信息,请参阅下面的“密钥生成选项”和“参数生成选项”。
要列出算法的可能 opt 值,请使用:openssl genpkey -algorithm XXX -help
-
-genparam
生成一组私钥参数而不是最终的私钥。如果使用此选项,则必须存在任何 -algorithm、-paramfile 或 -pkeyopt 选项。
-
-paramfile filename
一些公钥算法根据一组参数生成私钥。可以使用此选项提供这些算法。如果使用此选项,则所使用的公钥算法由此处指定的参数决定。如果使用此选项,则必须存在 -pkeyopt 选项。选项 -paramfile 和 -algorithm 是互斥的。
-
-text
打印私钥、公钥和参数的(未加密)文本表示以及 PEM 或 DER 结构。
-
-rand files, -writerand file
指定随机数状态保存的文件,读取之前的随机数生成器状态并写入当前状态用于下次执行的时候继续使用。现在OpenSSL已经从操作系统中读取熵源,这个选项不再需要,只是在特殊情况下才有用。
-
-engine id
指定engine id,这个选项已经废弃
-
-provider name
指定provider name
-
-provider-path path
provider的路径
-
-propquery propq
provider中的属性
-
-config
指定备用的配置文件,用于替代默认的openssl.cnf
key生成选项
每种算法支持的选项以及算法的每种实现都可能有所不同。OpenSSL 实现的选项详述如下。没有为 X25519、X448、ED25519 或 ED448 算法定义密钥生成选项。
RSA选项
-rsa_keygen_bits:numbits
rsa密钥长度,默认2048位
- rsa_keygen_primes:numprimes
素数个数,默认是2
-
rsa_keygen_pubexp:value
The RSA public exponent value. This can be a large decimal or hexadecimal value if preceded by 0x. Default value is 65537.
RSA 公共指数值。可以是一个较大的10进制或16进制数(如果前面有 0x),默认是 65537。
RSA-PSS选项
RSA-PSS应该指的是PSS填充的RSA签名,由PKCS#1 v2.1定义。
默认没有任何限制
- rsa_keygen_bits:numbits, rsa_keygen_primes:numprimes, rsa_keygen_pubexp:value
同RSA
-
rsa_pss_keygen_md:digest
如果设置只能使用digest签名
-
rsa_pss_keygen_mgf1_md:digest
如果设置只能使用digest作为 MGF1 parameter.
-
rsa_pss_keygen_saltlen:len
限制salt的最小长度
EC选项
-
ec_paramgen_curve:curve
指定使用的EC曲线. OpenSSL支持NIST曲线,如 “P-256″,也支持国密,如 “SM2”.
-
ec_param_enc:encoding
The encoding to use for parameters. The encoding parameter must be either named_curve or explicit. The default value is named_curve.
用于参数的编码。编码参数必须是 named_curve 或 explicit 。默认值为 named_curve。
使用named_curve时参数文件中只包含代表曲线的OID,使用explicit则包含定义曲线的参数的具体值(这些参数决定了不同的曲线,比如P-256和SM2的曲线参数是不同的)。可以用以下命令观察这两者的区别。openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:explicit -text openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -text
DH选项
- -group:name
The paramfile option is not required if a named group is used here. See the “(DH Parameter Generation Options)(https://docs.openssl.org/3.4/man1/openssl-genpkey/#dh-parameter-generation-options)” section below.
如果在这指定命名的group,则paramfile option不再是必须的,参考 “(DH Parameter Generation Options)(https://docs.openssl.org/3.4/man1/openssl-genpkey/#dh-parameter-generation-options)”
参数生成选项
每种算法支持的选项以及算法的每种实现都可能有所不同
DSA选项
DSA算法已被认为不安全,这里不再翻译
- dsa_paramgen_bits:numbits
The number of bits in the generated prime. If not specified 2048 is used.
-
dsa_paramgen_q_bits:numbits
-
qbits:numbits
The number of bits in the q parameter. Must be one of 160, 224 or 256. If not specified 224 is used.
-
dsa_paramgen_md:digest
-
digest:digest
The digest to use during parameter generation. Must be one of sha1, sha224 or sha256. If set, then the number of bits in q will match the output size of the specified digest and the dsa_paramgen_q_bits parameter will be ignored. If not set, then a digest will be used that gives an output matching the number of bits in q, i.e. sha1 if q length is 160, sha224 if it 224 or sha256 if it is 256.
-
properties:query
The digest property query string to use when fetching a digest from a provider.
-
type:type
The type of generation to use. Set this to 1 to use legacy FIPS186-2 parameter generation. The default of 0 uses FIPS186-4 parameter generation.
-
gindex:index
The index to use for canonical generation and verification of the generator g. Set this to a positive value ranging from 0..255 to use this mode. Larger values will only use the bottom byte. This index must then be reused during key validation to verify the value of g. If this value is not set then g is not verifiable. The default value is -1.
-
hexseed:seed
The seed seed data to use instead of generating a random seed internally. This should be used for testing purposes only. This will either produced fixed values for the generated parameters OR it will fail if the seed did not generate valid primes.
DH选项
对于大多数用例,建议使用 group 选项而不是 type 选项。请注意,如果未指定参数生成选项,则默认不使用 group 选项。
- group:name
-
dh_param:name
通过命名的的DH group选择DH参数,如果这里指定值所有其它选项会被忽略
DH算法的有效的值是:”ffdhe2048″, “ffdhe3072”, “ffdhe4096”, “ffdhe6144”, “ffdhe8192”, “modp_1536”, “modp_2048”, “modp_3072”, “modp_4096”, “modp_6144”, “modp_8192”.
DHX算法的有效值使用是RFC5114命名,包括: “dh_1024_160”, “dh_2048_224”, “dh_2048_256”.
group:name和dh_param:name是等效的 -
dh_rfc5114:num
如果设置这个选项则使用RFC5144参数值生成DHX参数,num可以是1,2,3,分别代表 “dh_1024_160”, “dh_2048_224” or “dh_2048_256″(与使用group:name相同的效果)。使用这个选项时所有其它选项会被忽略。
-
pbits:numbits
-
dh_paramgen_prime_len:numbits
The number of bits in the prime parameter p. The default is 2048.
-
qbits:numbits
-
dh_paramgen_subprime_len:numbits
The number of bits in the sub prime parameter q. The default is 224. Only relevant if used in conjunction with the dh_paramgen_type option to generate DHX parameters.
-
safeprime-generator:value
-
dh_paramgen_generator:value
The value to use for the generator g. The default is 2. The algorithm option must be “DH” for this parameter to be used.
-
type:string
The type name of DH parameters to generate. Valid values are:
- “generator”
Use a safe prime generator with the option safeprime_generator The algorithm option must be “DH”.
-
“fips186_4”
FIPS186-4 parameter generation. The algorithm option must be “DHX”.
-
“fips186_2”
FIPS186-4 parameter generation. The algorithm option must be “DHX”.
-
“group”
Can be used with the option pbits to select one of “ffdhe2048”, “ffdhe3072”, “ffdhe4096”, “ffdhe6144” or “ffdhe8192”. The algorithm option must be “DH”.
-
“default”
Selects a default type based on the algorithm. This is used by the OpenSSL default provider to set the type for backwards compatibility. If algorithm is “DH” then “generator” is used. If algorithm is “DHX” then “fips186_2” is used.
- “generator”
-
dh_paramgen_type:value
The type of DH parameters to generate. Valid values are 0, 1, 2 or 3 which correspond to setting the option type to “generator”, “fips186_2”, “fips186_4” or “group”.
-
digest:digest
The digest to use during parameter generation. Must be one of sha1, sha224 or sha256. If set, then the number of bits in qbits will match the output size of the specified digest and the qbits parameter will be ignored. If not set, then a digest will be used that gives an output matching the number of bits in q, i.e. sha1 if q length is 160, sha224 if it is 224 or sha256 if it is 256. This is only used by “fips186_4” and “fips186_2” key generation.
-
properties:query
The digest property query string to use when fetching a digest from a provider. This is only used by “fips186_4” and “fips186_2” key generation.
-
gindex:index
The index to use for canonical generation and verification of the generator g. Set this to a positive value ranging from 0..255 to use this mode. Larger values will only use the bottom byte. This index must then be reused during key validation to verify the value of g. If this value is not set then g is not verifiable. The default value is -1. This is only used by “fips186_4” and “fips186_2” key generation.
-
hexseed:seed
The seed seed data to use instead of generating a random seed internally. This should be used for testing purposes only. This will either produced fixed values for the generated parameters OR it will fail if the seed did not generate valid primes. This is only used by “fips186_4” and “fips186_2” key generation.
EC选项
与生成密钥时相同
注意:
与算法特定的实用程序相比,鼓励使用 genpkey 程序,因为可以使用附加算法选项和 ENGINE 提供的算法。
Views: 1