2012-09-28 255 views
5

我有以下命令來OpenSSL生成私鑰和公鑰:生成私鑰和公鑰的OpenSSL

openssl genrsa –aes-128-cbc –out priv.pem –passout pass:[privateKeyPass] 2048 

openssl req –x509 –new –key priv.pem –passin pass:[privateKeyPass] -days 3650 –out cert.cer 

但不是第一個命令我得到的工作 以下錯誤:

usage: genrsa [args] [numbits] 
-des   encrypt the generated key with DES in cbc mode 
-des3   encrypt the generated key with DES in ede cbc mode (168 bit key) 
-seed 
       encrypt PEM output with cbc seed 
-aes128, -aes192, -aes256 
       encrypt PEM output with cbc aes 
-camellia128, -camellia192, -camellia256 
       encrypt PEM output with cbc camellia 
-out file  output the key to 'file 
-passout arg output file pass phrase source 
-f4    use F4 (0x10001) for the E value 
-3    use 3 for the E value 
-engine e  use engine e, possibly a hardware device. 
-rand file:file:... 
       load the file (or the files in the directory) into 
       the random number generator 

我在做什麼錯?

編輯: 我解決的第一個命令:

openssl genrsa -aes128 -out privkey.pem 2048 

現在我得到一個錯誤與謝勝利:

unknown option –x509 
+0

我不知道參數的順序是否重要? –

回答

9

'genrsa'只生成一個RSA密鑰。

'req'然後使用該鍵進行x509樣式請求。

如果你只需要一個rsa密鑰對 - 使用genrsa。

如果您需要密鑰對和簽名的x509請求,請使用'genrsa'然後'req'。 。

可選 'REQ' 也可以爲您生成該密鑰(即它封裝了 'genrsa' 命令(和gendh)

所以:

openssl genrsa -aes128 -out privkey.pem 2048 
openssl req -new -x509 -key privkey.pem 

幾乎等同於

openssl req -new -x509 -keyout privkey.pem -newkey rsa:2048 

只是不像「genrsa」,「請求」不允許你指定AES128作爲加密。

因此,在很多企業設置中,需要分兩步完成對所應用的密鑰加密的充分控制。

+0

這個命令有竅門:openssl req -new -x509 -key new.pem -days 3650 -out cert.crt很多謝謝 – kozla13

+2

請注意-x509會生成一個自簽名證書。如果要生成證書請求,請忽略此選項。 – Todd

1

,我可以從輸出看到的,你選錯算法。 難道你不應該通過-aes128而不是-aes-128-cbc

從手動我認爲-aes-128-cbcopenssl enc適當的參數,但我不知道是否應該爲genrsa工作。