Nginxの起動時にSSL証明書の秘密鍵のパスフレーズを自動で入力させる方法

SSL証明書を取得する際に秘密鍵を生成でパスワード(パスフレーズ)を設定した場合、Nginxをスタートもしくはリスタートしようとした場合に下記のようにエラーメッセージが表示され起動できない。

$ sudo systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

「t」オプションでチェックをしてみると、何やらパスフレーズを入力せよと表示されます。

$ sudo nginx -t
Enter PEM pass phrase:

ここで秘密鍵を生成した際に設定したパスフレーズを入力するとNginxが起動できますが、毎回起動の度に入力は出来ないのでパスフレーズを自動的に認証する設定を行います。

解決方法

秘密鍵のパスフレーズを転記したファイルを作成しNginxの設定に追記することで解決できます。

1.パスフレーズを転記したファイルを作成

$ sudo vi /etc/nginx/ssl/yourdomain.com.private.passphrase

ファイルの中身はパスフレーズのみで作成

2.Nginxの設定ファイルを修正

server {
    listen 443 ssl;
    ssl on;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/yourdomain.com.certificate.cert;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key.pem 
    ssl_password_file /etc/nginx/ssl/yourdomain.com.key.passphrase; #今回作成したファイル 
}

3.Nginxをリスタート

$ sudo systemctl restart nginx

Leave a Reply

Your email address will not be published. Required fields are marked *