秘密鍵は読み取りを厳しく制限する必要があります。 600 に権限を設定する root が所有 動作するはずです。ただし、他の安全なアクセス許可設定があります-Ubuntuは、所有者がrootのディレクトリにキーを保存します およびグループ ssl-cert とパーミッション 710 .これは、ssl-cert のメンバーのみが そのディレクトリ内のすべてのファイルにアクセスできます。秘密鍵にはグループ ssl-cert があります 、所有者 root 、およびパーミッション 640 .
nginx のセットアップに問題があり、この質問に出くわしました。ここでの他の回答はすでに質問に直接回答していますが、もう少し情報が役立つと思いました.
通常、nginx は root として起動されます initスクリプト/systemdによるユーザー。ただし、nginx には、通常の操作のために権限の低いユーザーに切り替える機能もあります。私の質問は、ssl 証明書/キーをロードするためにどのユーザーが使用されているかということでした。最初の特権ユーザーですか、それとも切り替えられたユーザーですか?
幸いなことに、nginx は初期パーミッションを使用して、ユーザーを切り替える前に証明書とキーをメモリに読み込みます。したがって、通常、キーは nginx がまだ root として実行されているときにロードされるため、非常に制限されたアクセス許可をキーに残すことができます。 .
私が遭遇した問題は、私が 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 のレベル .
これが誰かの役に立てば幸いです。