天天看點

OpenSSL指令---genpkey

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