背景
再構成のために実行中のnginx基本プロセスにSIGHUPが送信されると、nginx(特にopensslライブラリ)は、ログに示すようにパスワードで暗号化された証明書キーがあるかどうかを尋ねます。
Enter PEM pass phrase:
入力ハンドルがないため、すぐに失敗し、再ロードも失敗します。
質問
nginxがパスワードを要求して入力するときに知る便利な方法はありますか?
アイデア
ssl_password_file
ディレクティブはディスクにトレースを残すので、オプションではありません。- nginxを別の親プロセスにラップしてフォアグラウンドで実行する方が良いかもしれませんが、これはnginxに少しの不安定性が追加されるのか心配です。
- だから私はそれを解決するためにどのLinuxメカニズムを使用するのが最善だと思います。たぶん名前付きパイプですか?しかし、名前付きパイプにはNginxの参加が必要だと思います。
答え1
この目的のためのディレクティブがあります。以下を使用して、ファイルに保存されている行で区切られたパスワードのリストを使用するように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ユーザーだけが読むことができることに注意してください。攻撃者があなたのパスワードを見つけた場合、セキュリティ違反が発生する可能性があります。
答え2
私の考えでは、Hashicorp Vault(https://www.nginx.com/blog/protecting-ssl-private-keys-nginx-hashicorp-vault/)または代替。