openssl genpkey -paramfile dhp.pem -out dhkey.pem
用途:
用于产生各种密钥(RSA、DSA、DH、EC等)的私钥值。
用法:
openssl genpkey [-out filename] [-outform PEM | DER] [-pass arg] [-cipher] [-engine id] [-paramfile file] [-algorithm alg] [-pkeyopt opt:value] [-genparam] [-text]
选项说明:
-out filename:指定输出文件。如果没有设置,则为标准输出。
-outform PEM | DER:指定输出格式,一般为PEM和DER。
-pass arg:输出文件口令保护存放方式。
-cipher:私钥加密的加密算法。
-engine id:硬件引擎。
-paramfile file:产生私钥的参数值。一些公钥算法可以根据这些参数产生一个私钥。如果想这样产生密钥,则必须设置此选项。参数值来决定是否使用公钥算法。如果用了此选项,该选项必须在-pkeyopt之前。
-algorithm alg:公钥算法,可以用RSA、DSA以及DH。如果用了此选项,该选项必须在-pkeyopt之前。
-pkeyopt opt:value:设置公钥算法的选项值。
-genparam:产生一系列参数来代替私钥值。如果用了此选项,该选项必须在-algorithm alg 、-pkeyopt 以及-paramfile file之前。
-text:打印消息值。
密钥产生选项值:
这些选项支持每个算法,对个算法可以改变。OpenSSL中的实现如下:
RSA密钥产生选项:
B<rsa_keygen_bits:numbits>:产生密钥位数。如果没有指定,则默认为1024。
B<rsa_keygen_pubexp:value>:RSA公钥指数值。它可以是一个大地小数或者是以B<0x>开头的十六进制数。默认为65537。
DSA参数产生选项:
B<dsa_paramgen_bits:numbits>:产生DSA密钥参数的位数,如果没有指定,则默认为1024。
DH参数产生选项:
B<dh_paramgen_prime_len:numbits>:素数参数B<p>的字节数。
B<dh_paramgen_generator:value>:产生B<g>的值。
EC参数产生选项:
B<ec_paramgen_curve:curve>:用的EC椭圆曲线。
GOST2001 密钥和参数产生选项:
默认的是不支持Gost 2001.为了支持这个算法,必须在OpenSSL配置文件中加载ccgost硬件引擎。可以看看在engines/ccgost 目录下的README.gost文件介绍。
GOST R 34.10算法的参数文件是可选的。参数可以在密钥产生中被指定。
B<paramset:name>:可以根据RFC4357来指定GOST R 34.10-2001的参数值。参数值可以用简短的名字、项目短名字或数字型的OID来指定。下面是所支持的参数值:
paramset OID Usage A 1.2.643.2.2.35.1 Signature B 1.2.643.2.2.35.2 Signature C 1.2.643.2.2.35.3 Signature XA 1.2.643.2.2.36.0 Key exchange XB 1.2.643.2.2.36.1 Key exchange test 1.2.643.2.2.35.0 Test purposes
注意:
使用genpkey项目是受到鼓舞的,是因为可以使用附加的算法选项和提供的硬件引擎算法可以被使用。
实例:
用常规参数值产生一个RSA私钥值。
openssl genpkey -algorithm RSA -out key.pem
用AES算法对输出的私钥文件进行加密,密钥为“hello”。
openssl genpkey -algorithm RSA -out key.pem -aes-128-cbc -pass pass:hello
用公共的指数3来产生一个2048位的RSA密钥值。
openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:2048 \ -pkeyopt rsa_keygen_pubexp:3
产生一个1024位的DSA密钥参数值。
openssl genpkey -genparam -algorithm DSA -out dsap.pem \ -pkeyopt dsa_paramgen_bits:1024
根据参数值来产生DSA密钥值。
openssl genpkey -paramfile dsap.pem -out dsakey.pem
产生1024位的DH参数值。
openssl genpkey -genparam -algorithm DH -out dhp.pem \ -pkeyopt dh_paramgen_prime_len:1024
根据参数值产生DH密钥值。
openssl genpkey -paramfile dhp.pem -out dhkey.pem