首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Openssl命令中加密密码

在Openssl命令中加密密码
EN

Stack Overflow用户
提问于 2018-11-24 14:42:08
回答 2查看 4.6K关注 0票数 1

目前,我正以明文格式提供密码,详情如下:

-aes128 -passout pass:foobar 3072

其中foobar是以明文格式提供的密码。

我希望使用某种加密格式或任何其他方式提供密码,使其不易读懂。

EN

回答 2

Stack Overflow用户

发布于 2018-11-24 18:05:06

如果您确实按照您的请求以加密格式提供了密码,那么如何将用于加密所述密码的加密密钥提供给OpenSSL,以便OpenSSL能够对其进行解密并使用正确的密码?

我猜想,您提供给OpenSSL的密码是OpenSSL用来加密将要生成的RSA私钥的。如果这确实是您希望OpenSSL使用的密码,则必须以明文形式给出。

如果您担心有人可能会看到它,您需要确保它是以安全的方式输入的。但是,“加密密码”不是解决方案,因为您最终可能会为密码本身保护加密密钥。

票数 1
EN

Stack Overflow用户

发布于 2018-11-24 23:16:36

通常,密码应该通过openssl提示符传递(即:删除-passout pass:foobar参数)。

如果您通过命令行传递密码,因为您必须在脚本的另一部分中使用密码,则可以使用下面的示例:

代码语言:javascript
复制
echo -n Password: 
read -s PASS
openssl genrsa -out keypair.pem -aes128 -passout pass:${PASS}
opnessl req -new -key keypair.pem -passin pass:${PASS}

但是,如果您真的需要在不需要用户交互的情况下生成密钥,可以使用下面的示例,但我不推荐在任何生产环境中使用。

创建一个脚本(例如: auto_key_gen.sh),其中包含以下代码:

代码语言:javascript
复制
PASS=`openssl rand -hex 16`
openssl genrsa -out auto_keypair.pem -aes128 -passout pass:${PASS}
echo -n ${PASS} | openssl rsautl -encrypt -pubin -inkey $1 -out encrypted_pass.bin

生成个人密钥并提取公钥:

代码语言:javascript
复制
openssl genrsa -out mykeypair.pem -aes128
openssl rsa -in mykeypair.pem -out mypubkey.pem -pubout

把私人键盘放在安全的地方。个人公钥,用于运行脚本:

代码语言:javascript
复制
chmod +x auto_key_gen.sh
./auto_key_gen.sh mypubkey.pem

脚本生成一个随机密码,并使用它加密生成的密钥对(auto_keypair.pem)。密码使用您的个人公钥加密并保存在一个文件(encrypted_pass.bin)中。

该脚本可以将密码保存在“内存”中,以便与其他openssl命令一起使用。

您可以使用您的个人键盘检索加密密码:

代码语言:javascript
复制
openssl rsautl -decrypt -inkey mykeypair.pem -in encrypted_pass.bin -out decrypted_pass.hex

必须保护脚本和公钥免遭未经授权的修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53459282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档