openssl中-nodes
参数的用途是什么?
答案 0 :(得分:105)
选项-nodes
不是英文单词“nodes”,而是“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。
答案 1 :(得分:11)
编辑:nginx v1.7.3添加了一个ssl_password_file指令,该指令从指定文件中读取密码,尝试上下文中的每个密码 encrypted-private.key
indiv是正确的,-nodes
参数意味着OpenSSL将创建UNencrypted private.key ;否则,将出现密码短语提示,以创建 encrypted-private.key 。见req,pkcs12,CA.pl
然而,我觉得目的(对于程序员来说)是因为:
ssl_password_file file.keys;
或http { }
上下文中指定server { }
。 [ref] -nodes
创建 private.key 而不加密有用:锁定 private.key
sudo chown root:ssl-cert private.key
- ch ange 拥有 private.key 的 root 用户,< em> ssl-cert 组sudo chmod 640 private.key
- 将 private.key 的访问权限更改为所有者R / W,R组选项A
更强的安全性,但是当服务器重新启动时,必须为 encrypted-private.key 手动键入密码
选项B
中等安全性,可能是A / C之间的良好平衡
选项C
安全性较弱,但未提示加密 private.key 密码短语