OpenSSL命令---rsa

本文介绍了如何使用OpenSSL工具中的rsa命令进行RSA密钥的处理、格式转换及信息打印等操作。文中详细解释了各选项的功能,并提供了具体的使用示例。

用途:

Rsa命令用于处理RSA密钥、格式转换和打印信息。其实其用法和dsa的差不多。

用法:

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

选项说明:

-inform PEM|NET|DER:输入文件格式,DERPEM以及NET格式。DER格式采用ASN1DER标准格式。一般用的多的都是PEM格式,就是base64编码格式。NET是为了和老的netscape server以及IIS兼容才弄出来的。他使用没有被salt过的RC4做加密算法,加密强度很底,如果不是一定要用就别用。

-outform PEM|NET|DER:输出文件格式,DERPEM以及NET格式。同inform

-in filename:输入的RSA密钥文件,默认为标准输入。

-out filenameRSA密钥输出文件,默认为标准输出。

-passin arg:指定私钥包含口令存放方式。比如用户将私钥的保护口令写入一个文件,采用此选项指定此文件,可以免去用户输入口令的操作。比如用户将口令写入文件“pwd.txt”,输入的参数为:-passin file:pwd.txt

-passout arg:输出文件口令保护存放方式。

-sgckey:该选项是配合NET格式的私有密钥文件的一个选项。

-text:打印所有信息。

-noout:不打印信息。

-modulus:打印公钥信息。

-check:检查公司约是否匹配。

-pubin:设置此选项后,从输入文件中读取公钥值,默认读取的是私钥值。

-pubout:设置此选项后,保存公钥值到输出文件中,默认的是保存私钥值到输出文件中。

-engine id:指定引擎。

Ø  -des -des3 -idea -aes128, -aes192, -aes256-camellia128, -camellia192, -camellia256:指定的私钥保护加密算法。

注意:

PEM格式的私钥用下面的头部和底部:

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

PEM格式的公钥用下面的头部和底部:

-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----

B<NET>表单是一个兼容老的Netscape服务器和微软IIS的一种格式。密钥文件,这里使用不填充数据的RC4来加密,它不是安全的,当使用时候要小心。

实例:

生成明文私钥文件:

openssl genrsa -out key.pem


转换为DER编码:

openssl rsa -in key.pem -outform der -out key.der


将明文私钥文件转换为密码保护:

openssl rsa -inform der -in key.der -des3 -out enckey.pem


将公钥写入文件:

openssl rsa -in key.pem -pubout -out pubkey.pem


打印公钥信息:

openssl rsa -pubin -in pubkey.pem –text -modulus

显示私钥信息,保护密钥写在pwd.txt

openssl rsa -in enckey.pem –passin file:pwd.txt


BUGs:

命令行选项中的密码选项目前不能工作于B<NET>格式。

应该有一个选项自动地去处理.key这种文件,不用手动的去编辑它们。

### 如何使用 OpenSSL 的 `dgst` 命令进行 RSA 签名 #### 背景说明 OpenSSL 提供了一个强大的工具集,其中 `dgst` 是用来计算消息摘要并支持签名和验证功能的重要命令。通过该命令,可以利用多种哈希算法(如 SHA-256、SHA-512 等)生成消息摘要,并结合私钥完成 RSA 签名操作。 以下是具体的实现方法: --- #### 步骤描述 ##### 1. 准备私钥文件 确保已经有一个有效的 RSA 私钥文件(例如 `private_key.pem`)。如果尚未创建私钥,可以通过以下命令生成: ```bash openssl genpkey -algorithm RSA -out private_key.pem -aes256 -pkeyopt rsa_keygen_bits:2048 ``` 此命令会生成一个受密码保护的 2048 位 RSA 私钥[^3]。 --- ##### 2. 创建待签名的消息文件 准备一个包含需要签名数据的文件,例如 `message.txt`。 --- ##### 3. 使用 `dgst` 命令生成签名 运行以下命令以基于指定的哈希算法(如 `-sha256`)生成签名: ```bash openssl dgst -sha256 -sign private_key.pem -out signature.bin message.txt ``` 上述命令解释如下: - `-sha256`: 指定使用的哈希算法为 SHA-256。 - `-sign private_key.pem`: 表明使用名为 `private_key.pem` 的私钥文件进行签名。 - `-out signature.bin`: 将生成的二进制签名保存到文件 `signature.bin` 中。 - `message.txt`: 输入文件,即需要签名的内容。 注意:签名将以二进制形式存储在目标文件中[^4]。 --- ##### 4. 验证签名(可选) 为了验证签名的有效性,还需要公钥文件以及原始消息文件。假设已提取出对应的公钥文件 `public_key.pem`,可通过以下方式验证签名: ```bash openssl dgst -sha256 -verify public_key.pem -signature signature.bin message.txt ``` 成功时返回 `Verified OK`;失败则提示错误信息。 --- #### 示例代码总结 以下是完整的流程示例: ```bash # 生成私钥 openssl genpkey -algorithm RSA -out private_key.pem -aes256 -pkeyopt rsa_keygen_bits:2048 # 导出公钥 openssl rsa -in private_key.pem -pubout -out public_key.pem # 待签名的消息文件 echo "This is a test message." > message.txt # 使用私钥生成签名 openssl dgst -sha256 -sign private_key.pem -out signature.bin message.txt # 验证签名 openssl dgst -sha256 -verify public_key.pem -signature signature.bin message.txt ``` --- ### 注意事项 - 如果私钥受到密码保护,则在执行签名过程中会被要求输入密码。 - 签名文件通常是二进制格式,因此不建议直接编辑或打印其内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值