Openssl 中-node 参数的用途是什么?

在 openssl 中 -nodes参数的目的是什么?

57257 次浏览

选项 -nodes不是英文单词“ node”,而是“ no DES”。当作为参数给出时,这意味着 OpenSSL 不会加密 PKCS # 12文件中的私钥。

为了加密私钥,您可以省略 -nodes,您的密钥将用3DES-CBC 进行加密。为了加密密钥,OpenSSL 提示您输入密码,并使用密码使用密钥派生函数 EVP _ BytesToKey生成加密密钥。

根据您的 OpenSSL 版本和编译选项,您的 能够提供这些选项来代替 -nodes:

-des          encrypt private keys with DES
-des3         encrypt private keys with triple DES (default)
-idea         encrypt private keys with idea
-seed         encrypt private keys with seed
-aes128, -aes192, -aes256
encrypt PEM output with cbc aes
-camellia128, -camellia192, -camellia256
encrypt PEM output with cbc camellia

最终在库级 OpenSSL 使用您选择的加密算法(或缺少加密算法)调用函数 PEM _ write _ bio _ PrivateKey

编辑: nginx v1.7.3添加了一个 < strong > ssl _ password _ file 指令,该指令从指定的文件中读取密码短语,尝试在上下文的 < em > crypted-private 上使用每个密码短语。钥匙

Indiv 是正确的,-nodes参数意味着 OpenSSL 将创建未加密的 私人钥匙; 否则,将出现创建 加密,私密,密钥的口令提示符。参阅 请求Pkcs12CA.pl

然而,我觉得 目的(对于程序员来说)是因为:

  • HTTP 服务器(例如 阿帕奇人Nginx)不能读取没有密码短语 & rarr 的 加密,私密,密钥;
    • 选项 A ——每次 HTTP 服务器启动时,必须提供 加密,私密,密钥的密码
    • 选项 B-在 http { }server { }上下文中指定 ssl_password_file file.keys;
    • 选项 C-使用 -nodes创建不加密的 私人钥匙

有用: 锁定[ em > private. key

  • {将 HTTP 服务器添加到 Ssl-cert组}
  • sudo chown root:ssl-cert private.key-ange 自己的er 的 私人钥匙用户,Ssl-cert
  • sudo chmod 640 private.key-将 私人钥匙的访问权限更改为所有者 R/W,R 组
  • 现在,HTTP 服务器应该能够启动并读取未加密的 私人钥匙

选项 A

更强的安全性,但当服务器重新启动时,必须为 加密,私密,密钥手动输入密码短语

选择 B

中等安全性,可能在空调之间有很好的平衡

选项 C

较弱的安全性,但未提示输入未加密的 私人钥匙密码