首页 > 代码库 > 2.openssl rsa/pkey

2.openssl rsa/pkey

分别是RSA密钥的处理工具和通用非对称密钥处理工具。它们用法基本一致,所以只介绍openssl rsa。

[root@xuexi tmp]# man rsa
NAME
       rsa - RSA key processing tool

SYNOPSIS
       openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]

该命令也很简单,基本上就是输入和输出私钥或公钥的作用。

-in filename:指定密钥输入文件。将从该文件读取密钥,不指定时将从stdin读取。默认读取私钥,如果指定-pubin选项将为读取公钥。

-out filename:指定密钥输出文件。不指定将输出到stdout,不能和-in的filename相同。默认输出私钥,如果指定-pubin或-pubout选项都将输出公钥。

-pubin:从filename中读取密钥,不设置该选项时,默认是从-in filename的filename中读取私钥,设置该选项后将从filename中读取公钥,所以filename必须为公钥文件。公钥文件可以是随意格式的文件,只要它是公钥文件,就有“-----BEGIN PUBLIC KEY-----”和“-----END PUBLIC KEY-----”的标识部分。

-pubout:从filename中提取公钥并输出,不设置该选项时,默认输出私钥,设置该选项后从私钥中输出公钥,所以-in filename的filename文件必须是私钥文件。不管是什么格式的私钥文件,只要是私钥文件,就有“-----BEGIN PRIVATE KEY-----”和“-----END PRIVATE KEY-----”的标识部分。

-noout:控制不输出指定信息。常和其他展示选项一起使用。

-text:转换输入和输出的密钥文件格式为纯文本格式。

-check:检查RSA密钥是否完整未被修改过,只能检测私钥,因为公钥来源于私钥。因此选项-in filename的filename文件只能是私钥文件。

 

例如,从前文创建的RSA私钥文件/tmp/genrsa.txt中提取公钥到genrsa.pub中。

[root@xuexi tmp]# openssl rsa -in genrsa.txt -pubout -out genrsa.pub

技术分享

检查私钥完整性。

[root@xuexi tmp]# openssl rsa -in genrsa.txt -check

技术分享

使用-pubin读取公钥,所以-in后的文件只能是公钥文件。

[root@xuexi tmp]# openssl rsa -in genrsa.txt -pubin ?/*genrsa.txt私钥文件,报错*/
unable to load Public Key
139805512431432:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: PUBLIC KEY
[root@xuexi tmp]# openssl rsa -in genrsa.pub -pubin ?/*genrsa.pub公钥文件,正确*/

2.openssl rsa/pkey