OpenSSL无法加载公钥

car*_*mba 10 openssl ssh-keys

尝试在OSX Yosomite 10.10.2上通过命令行加密文本消息

创建这样的.pem公钥:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -t PKCS8 > id_rsa.pem
Run Code Online (Sandbox Code Playgroud)

如果我尝试加密myMessage.txt

openssl rsautl -encrypt -inkey ~/.ssh/id_rsa.pem -pubin -in ~/Desktop/myMessage.txt -out ~/Desktop/encrypted.txt
Run Code Online (Sandbox Code Playgroud)

我明白了 unable to load Public key

如果我然后输入:

openssl asn1parse -in id_rsa.pem
Run Code Online (Sandbox Code Playgroud)

返回: Error: offset too large

但我不知道如何解决它.我应该改变什么来使它工作?

car*_*mba 24

仍然不知道我的问题出了什么问题,但找到了解决方案:

1)生成RSA密钥:

$ openssl genrsa -out key.pem 1024 
$ openssl rsa -in key.pem -text -noout 
Run Code Online (Sandbox Code Playgroud)

2)将公钥保存在pub.pem文件中:

$ openssl rsa -in key.pem -pubout -out pub.pem 
$ openssl rsa -in pub.pem -pubin -text -noout 
Run Code Online (Sandbox Code Playgroud)

3)加密一些数据:

$ echo test test test > file.txt 
$ openssl rsautl -encrypt -inkey pub.pem -pubin -in file.txt -out file.bin 
Run Code Online (Sandbox Code Playgroud)

4)解密加密数据:

$ openssl rsautl -decrypt -inkey key.pem -in file.bin 
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力

感谢Marek Marcola提供的信息http://openssl.6102.n7.nabble.com/Re-Can-I-use-my-own-keys-with-openssl-for-RSA-enc-dec-td12506. HTML


小智 5

我也遇到了这个问题,并认为这里有一个很好的提示:

如何在两种公钥格式之间进行转换,一种是“BEGIN RSA PUBLIC KEY”,另一种是“BEGIN PUBLIC KEY”

似乎 OpenSSL 加密命令需要 SSL 公钥而不是 RSA 公钥。

我们现在知道足够的信息来调整示例以使其工作。SSL 公钥可以从 RSA 公钥生成

openssl rsa -in id_rsa.pem -RSAPublicKey_in -pubout > id_pub.pem
Run Code Online (Sandbox Code Playgroud)

然后可以使用以下方法进行加密步骤

openssl rsautl -encrypt -inkey id_pub.pem -pubin -in ~/Desktop/myMessage.txt -out ~/Desktop/encrypted.txt
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,MacOSX Yosemite 中的默认 OpenSSL 命令似乎是 0.9.8zg。此版本中的rsa命令不支持运行上述第一个命令的功能。我通过安装 OpenSSL 1.0.1p 解决了这个问题。