openssl ---公钥、私钥、证书详解以及genrsa和rsa命令详解

1、openssl genrsa --help 用于生成一个 RSA私钥 (同openssl-genrsa),PEM编码格式

openssl genrsa [-help] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-F4] [-f4] [-3] [-primes num] [-verbose] [-quiet] [-traditional] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-propquery propq] [numbits]

-out filename 指定私钥输出的文件明,如果不指定将输出到标准输出
-verbose 输出更多额外信息
-quiet 输出更少信息
-aes128/-aes191 当生成私钥的时候,有的时候会选择对该私钥进行加密,这些就是可以选择的加密算法,当使用这些加密的时候,必须要指定-passout 密码,如果不显示指定密码,shell会交互式的让你输入密码
-passout arg 用于指定输出密钥文件的密码,密码格式pass:password,即使不使用上述加密算法也可以使用密码
-traditional 默认是输出PKCS#8格式的私钥,但是当指定此选项的时候会输出传统的PKCS#1格式的私钥
numbits 用于指定私钥的大小,该选项必须是最后一个选项,默认大小是2048,最小为512

# 加密
openssl  genrsa  -out test.key  -passout  pass:abcd1234  -aes128  1024 
# 加密、需要交互式输入密码
openssl  genrsa  -out test.key    -aes128  1024 
# 不加密但是使用密码
openssl  genrsa  -out test.key  -passout  pass:abcd1234  1024 
# 不使用密码
openssl  genrsa  -out test.key    1024 

上述方式生成的私钥格式是PEM格式的,非加密私钥文件内容格式如下:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQCxImyGkSj2rB7zSNSM/2h4dg5tpJNGwJDQLE/PNKQtkorMgrbI
...
-----END RSA PRIVATE KEY-----

加密私钥文件内容如下:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,8775D04B98C9C9EE

zx8ehH7qey+588/UVCKu37NFzMvYCBJr9jrryhg7AJtU9eKxFlDIAVNVvNqgG8k+
a5H4a7TCmHB15coFJH52tpmqdGdfo5+758QEgax/YLTPrlBufatb7ZOOpexvJMUe
.................................
-----END RSA PRIVATE KEY-----

2、 openssl rsa 处理有关rsa私钥的命令

openssl rsa [-help] [-inform DER|PEM|P12|ENGINE] [-outform DER|PEM] [-in filename|uri] [-passin arg] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-traditional] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-pvk-strong] [-pvk-weak] [-pvk-none] [-engine id] [-provider name] [-provider-path path] [-propquery propq]

-in filename|uri 指定输入的RSA私钥文件,如不指定该选项则使用标准输入,如果该私钥文件被加密过,则需要指定密码(如果未被加密但却使用了密码是不需要密码的)
-out filename 指定输出文件写入私钥,如果不指定该选项将输出到标准输出,如果使用了加密算法则需要指定密码,注意输入文件名和输出文件名尽量不要一致
-passin arg 指定输入文件的密码
-passout arg 指定输出文件的密码
-pubin 默认情况下rsa命令的输入都是私钥,如果加上此选项,读取的就是公钥;如果输入的是私钥而不是公钥,将读取该私钥的公钥部分
-pubout 默认情况下rsa命令输出的都是私钥,如果加上此选项私钥对应的公钥将会被输出,如果输入项是一个公钥,那么此选项将会被自动设置
-check 检查私钥的连续性
-text 以text的格式打印出公钥或者私钥的内容,而不是加密后的版本
-noout 阻止输出公私钥加密后的版本
-modulus 输出该私钥的modulus 值
-aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea 指定假面算法
-inform DER|PEM|P12|ENGINE 指定输入文件的格式,默认情况是不指定的
-outform DER|PEM 指定输出文件的格式,默认是PEM

# 移除key.pem私钥的密码,将加密的私钥转换成非加密的私钥
openssl rsa -in key.pem -out keyout.pem
# 使用新的加密算法加密该私钥
openssl rsa -in key.pem -des3 -out keyout.pem
# 将PEM格式的私钥转换成DER格式的私钥
openssl rsa -in key.pem -outform DER -out keyout.der
# 打印出该私钥的组件
openssl rsa -in key.pem -text -noout
# 打印出该私钥的公钥部分,即从私钥提取公钥,由私钥生成对应的公钥
openssl rsa -in key.pem -pubout -out pubkey.pem

如何区分DER与PEM格式呢
区分DER与PEM格式的方式如下,并且cat一个der格式的文件是乱码,cat一个PEM格式的文件是字符串,

[yiifung@master01 ssl]$ file test.der 
test.der: data
[yiifung@master01 ssl]$ file test.key 
test.key: PEM RSA private key
[yiifung@master01 ssl]$ 
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用OpenSSL生成RSA,可以按照以下步骤进行操作: 1. 生成: 使用以下命令生成带密码的RSA: ``` openssl genrsa -aes128 -passout pass:foobar -out private_key.pem 2048 ``` 这将生成一个带密码的文件private_key.pem,密码是"foobar"。\[1\] 2. 解密: 如果需要解密文件,可以使用以下命令: ``` openssl rsa -in private_key.pem -passin pass:foobar -out private_key_unencrypted.pem ``` 这将生成一个不带密码的文件private_key_unencrypted.pem,密码是"foobar"。\[1\] 3. 生成: 使用以下命令文件中提取: ``` openssl rsa -in private_key.pem -passin pass:foobar -pubout -out public_key.pub ``` 这将从文件中提取,并将其保存到public_key.pub文件中。\[1\] 请注意,上述命令中的密码和文件名可以根据需要进行修改。 #### 引用[.reference_title] - *1* [Windows生成RSA](https://blog.csdn.net/qq_36306693/article/details/126821529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [(4) openssl rsa/pkey(查看、从中提取、查看)](https://blog.csdn.net/weixin_30872337/article/details/96641145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值