Io

獲取守護程序的輸出和輸入

  • November 13, 2020

背景

當 SIGHUP 被發送到正在執行的 nginx 主程序進行重新配置時,如果有密碼加密的證書密鑰,nginx(特別是 openssl 庫)將要求輸入,如日誌中所示:

Enter PEM pass phrase:

由於沒有輸入句柄,這會立即失敗並導致重新載入失敗。

問題

有什麼方便的方法可以知道 nginx 何時要求輸入密碼並輸入密碼?

想法

  • ssl_password_file指令不是一個選項,因為它會在磁碟上留下痕跡。
  • 將 nginx 包裝在另一個父程序中並在前台執行它會更好,但我擔心這可能會給 nginx 增加一些不穩定性。
  • 所以我認為最好用一些Linux機制來解決。可能命名管道?但我認為命名管道需要Nginx的參與

有一個指令意味著:您可以將 NGINX 配置為使用密碼列表,這些密碼由儲存在文件中的行分隔,方法是使用ssl_password_file。.

http { 
 server { server_name <fqdn|ip>;
 ssl_certificate_key <pem_key>; 
 ssl_password_file <path_to_passphrase>
     } 

然後重新載入配置:

sudo nginx -s reload

請注意,您的密碼文件應該只能由 root 使用者讀取。如果攻擊者可以訪問您的密碼,也存在安全漏洞。

我認為您應該使用 Hashicorp Vault ( https://www.nginx.com/blog/protecting-ssl-private-keys-nginx-hashicorp-vault/ ) 或替代方案。

引用自:https://unix.stackexchange.com/questions/619371