Io
獲取守護程序的輸出和輸入
背景
當 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/ ) 或替代方案。