openssl中的-nodes参数的目的是什么?
openssl中的-nodes
参数的目的是什么?
选项-nodes
不是英文单词“nodes”,而是“no DES”。 当作为参数给出时,这意味着OpenSSL不会encryptionPKCS#12文件中的私钥。
要encryption私钥,您可以省略-nodes
,您的密钥将用3DES-CBCencryption。 要encryption密钥,OpenSSL将提示您input密码,并使用该密码来使用密钥派生函数EVP_BytesToKey生成encryption密钥。
根据您的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使用您select的encryptionalgorithm(或缺less它)调用PEM_write_bio_PrivateKey函数。
编辑: nginx v1.7.3已经添加了一个ssl_password_file指令,它从指定文件中读取密码,尝试每个密码短语的encrypted-private.key
individual是正确的, -nodes
参数意味着OpenSSL将创build未encryption的private.key ; 否则,将会有一个密码提示来创buildencrypted-private.key 。 请参阅req , pkcs12 , CA.pl
不过,我觉得(程序员)的目的是因为:
- HTTP服务器(例如Apache , Nginx )不能在没有密码→的情况下读取encrypted-private.key
- 选项A – 每次HTTP服务器启动时,都必须为encrypted-private.key提供密码
- 选项B – 指定
ssl_password_file file.keys;
在http { }
或server { }
上下文中。 [ ref ] - 选项C – 使用
-nodes
创buildprivate.key而不encryption
有用的: lockingprivate.key
- {将SSL服务器添加到ssl-cert组}
-
sudo chown root:ssl-cert private.key
– 将自己的私钥保存到root用户, ssl-cert组 -
sudo chmod 640 private.key
– 将sudo chmod 640 private.key
访问权限更改为所有者R / W,组R - 现在,HTTP服务器应该能够启动并读取未encryption的private.key
选项A
更强的安全性,但是当服务器重新启动时,必须手动input encrypted-private.key的 密码
选项B
中等安全性,并且可能在A / C之间保持良好的平衡
选项C
安全性较弱,但没有提示inputUN密码private.key密码