生成私钥和公钥OpenSSL

koz*_*a13 11 openssl rsa public-key private-key

我有以下命令让OpenSSL生成私钥和公钥:

openssl genrsa –aes-128-cbc –out priv.pem –passout pass:[privateKeyPass] 2048
Run Code Online (Sandbox Code Playgroud)

openssl req –x509 –new –key priv.pem –passin pass:[privateKeyPass] -days 3650 –out cert.cer
Run Code Online (Sandbox Code Playgroud)

但是没有为第一个命令工作我得到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

编辑:我解决了第一个命令:

openssl genrsa -aes128 -out privkey.pem 2048
Run Code Online (Sandbox Code Playgroud)

现在我得到了一个错误:

unknown option –x509
Run Code Online (Sandbox Code Playgroud)

Dir*_*lik 16

'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 
Run Code Online (Sandbox Code Playgroud)

几乎相当于

 openssl req -new -x509 -keyout privkey.pem  -newkey rsa:2048
Run Code Online (Sandbox Code Playgroud)

除了'genrsa'之外,'req'不允许你指定aes128作为加密.

因此,在许多企业设置中,可以分两步完成,以便对所应用的密钥加密进行充分控制.

  • 请注意,-x509会生成自签名证书.如果要生成证书请求,请省略此选项. (2认同)