ansible でnginxのインストールと構成を(https
サイトのSSL証明書のセットアップと共に)構成しました。 SSL証明書はパスフレーズの下にあります。
Nginxを再起動するansilbeタスクを書きたいです。問題は次のとおりです。
通常、内部にhttpsサイトがあるnginxはPEM pass phrase
再起動中。 Ansibleは、プレイブックの実行中にそのパスフレーズを要求しません。
ソリューション があり、復号化された証明書とキーをプライベートディレクトリに保存します。しかし、証明書とキーを暗号化されていない場所に残したくありません。
再起動中にansible
経由でnginx(またはopenssl)にパスワードを渡す方法は?完璧なシナリオは次のとおりです。
vars_promt
)。別のオプションは、ansible vaultを使用することです。PEM pass phrase
、ansibleはnginxにパスワードを渡します。出来ますか?
Nginxには ssl_password_file
パラメーターがあります。
fileを指定します。各パスフレーズが個別の行に指定されている秘密鍵のパスフレーズを使用します。キーをロードするときに、パスフレーズが順番に試行されます。
例:
http {
ssl_password_file /etc/keys/global.pass;
...
server {
server_name www1.example.com;
ssl_certificate_key /etc/keys/first.key;
}
server {
server_name www2.example.com;
# named pipe can also be used instead of a file
ssl_password_file /etc/keys/fifo;
ssl_certificate_key /etc/keys/second.key;
}
}
ssl_password_file
をansible-vaultに保持し、コピーして、nginxを再起動し、成功したら削除してください。
それが実際に機能するか、これが持つ可能性のある他の副作用(たとえば、手動service nginx restart
はおそらく失敗する)の場合、私は直接的な経験はありませんが、それは私にとって論理的なアプローチのようです。
秘密鍵に対して十分に制限されたアクセス許可がある場合(たとえば、nginxにのみそれを読み取らせる)、これで十分でしょう。とにかく、Nginxはメモリにロードしたままにしておく必要があります。攻撃者が回復するのは難しいかもしれませんが、ボックスへのルートアクセスがある場合は、キーが危険にさらされていることを考慮する必要があります。
または、再起動中のコマンドにパスワードをパイプすることができます(例:echo mypass | service nginx restart
)。これにより、プロセスリストにプレーンテキストで表示され、これ以上安全であるとは見なされません。
ファイルのアクセス許可をロックダウンし、パスワードを持たないことをお勧めします。 Ansibleには、Sudo以外の個々のプロンプトへの応答を指定する方法はないと思います。