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密码