Nginxで安全な接続(https)をセットアップしようとしています。
しかし、私は秘密鍵の許可について少し心配しています。これはどのチュートリアルでも言及されていません。
それらを変更する必要がありますか?何に?
秘密鍵の読み取りは大幅に制限する必要があります。アクセス許可を600
に設定し、root
が所有するように設定すると機能するはずです。ただし、他にも安全なアクセス許可設定があります。Ubuntuは、所有者root
およびグループssl-cert
とアクセス許可710
を持つディレクトリにキーを格納します。つまり、ssl-cert
のメンバーだけがそのディレクトリ内の任意のファイルにアクセスできます。秘密鍵には、グループssl-cert
、所有者root
、権限640
があります。
Nginxのセットアップに問題があり、この質問に出くわしました。ここでの他の回答はすでに質問に直接回答していますが、もう少し情報が役立つと思いました。
通常、nginxはroot
ユーザーとしてinitスクリプト/ systemdによって起動されます。ただし、nginxには、通常の操作で特権の低いユーザーに切り替える機能もあります。だから私の質問は、どのユーザーがSSL証明書/キーをロードするために使用されていたのですか?最初の特権ユーザーまたは切り替えられたユーザー?
幸い、nginxはユーザーを切り替える前に、初期のアクセス許可を使用して証明書とキーをメモリに読み込みます。そのため、通常、鍵はroot
として実行されているときにnginxによって読み込まれるため、非常に制限されたアクセス許可のままにしておくことができます。
ここにたどり着いたときの問題は、ssl_certificate
のserver
ブロックでのみnginx.conf
を定義していたことでした。 [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
のようなエラーが発生し、鍵が適切な場所にあることを確認した。その問題は、ssl_certificate
のhttp
レベルでnginx.conf
を持っていなかったことです。
これが誰かに役立つことを願っています。