用途:
本指令能够使用RSA算法签名,验证身份,加密/解密数据。
用法:
openssl rsautl [-in file] [-out file] [-inkey file] [-passin arg] [-keyform PEM|DER|NET] [-pubin] [-certin]
[-asn1parse] [-hexdump] [-raw] [-oaep] [-ssl] [-pkcs] [-x931] [-sign] [-verify][-encrypt] [-decrypt] [-rev]
[-engine e]
选项说明:
-in filename:需要处理的文件,默认为标准输入。
-out filename:指定输出文件名,默认为标准输出。
-inkey file:指定我们的私有密钥文件,格式必须是RSA私有密钥文件。
-passin arg:指定私钥包含口令存放方式。比如用户将私钥的保护口令写入一个文件,采用此选项指定此文件,可以免去用户输入口令的操作。比如用户将口令写入文件“pwd.txt”,输入的参数为:-passin file:pwd.txt。
-keyform PEM|DER|NET:证书私钥的格式。
-pubin:表明我们输入的是一个公钥文件,默认输入为私钥文件。
-certin:表明我们输入的是一个证书文件。
-asn1parse:对输出的数据进行ASN1分析。该指令一般和-verify一起用的时候威力大。
-hexdump:用十六进制输出数据。
-pkcs、 -oaep、 -ssl、 -raw、-x931:采用的填充模式,上述四个值分别代表:PKCS#1.5(缺省值)、 PKCS#1 OAEP、 SSLv2、X931里面特定的填充模式,或者不填充。如果要签名,只有-pkcs和-raw可以使用。
-sign:给输入的数据签名。需要我们的私有密钥文件。
-verify:对输入的数据进行验证。
-encrypt:用我们的公共密钥对输入的数据进行加密。
-decrypt:用RSA的私有密钥对输入的数据进行解密。
-rev:数据是否倒序。
-engine e:硬件引擎。
注意:
Rsautl命令用RSA算法目录仅仅能够用于签名或验证小块的数据。
实例:
生成RSA密钥:
生成RSA密钥:
openssl genrsa -des3 -out prikey.pem
分离出公钥:
openssl rsa -in prikey.pem -pubout -out pubkey.pem
对文件签名:
openssl rsautl -sign -inkey prikey.pem -in a.txt -out sign.bin
验证签名:
openssl rsautl -verify -inkey prikey.pem -in sign.bin -out b.txt 验证成功后打印出b.txt的内容;
diff a.txt b.txt