Nginx で HTTPS(SSL)の設定を行う手順を記しておきます。
今さら感はありますが、そろそろ本格的に触っていかないとまずそうなので、基本のきから勉強をはじめます。
Nginx をHTTPS化する
環境
以下の環境で行ってます。
SSL証明書の作成
まずは、これがないと始まらない。SSL証明書を用意します。自己証明書、いわゆるオレオレ証明書の作り方は以下のエントリにまとめていますのでどうぞ。
Nginx の設定
SSL用の Config 作成
続いてはおさらいですが、Nginx の設定ファイル保存先などは以下。
/etc/nginx/conf.d
SSL設定用にファイルを作っていまいましょう。ssl.conf とかでよいのではないでしょうか。デフォルトで存在する default.conf をコピーして使います。
説明です。
- ssl_certificate
SSL証明書ファイルのパスを指定します。 - ssl_certificate_key
秘密鍵ファイルのパスを指定します。
続いて、設定を反映させます。Nginx ではプロセスを再起動する必要はありません。
または、以下の nginxコマンドでもOKです。
Webブラウザで、https://DomainName などとアクセスして確認します。オレオレ証明書なので当然エラーがでますが検証なので、しょうがなしです。
たったこれだけでサービスとして使えませんが、とりあえずHTTPSとして動くことが確認できました。
以下におまけとして、秘密鍵作成時にパスフレーズを設定している場合は、nginx をリスタートするときにエラーがでます。その場合の対処法をまとめましたので、どうぞ。
おまけ
おれおれ証明書を作成したときに(秘密鍵を作成するときに)パスフレーズが設定されていると以下のようなエラーがでます。
ちなみにエラーログは以下です。ログの見方は特段珍しいフォーマットでもないので割愛します(ホントはよく知らないだけ)
/var/log/nginx/error.log
↑のエラーの解消法は以下の様にパスワードを記載したパスワードファイルを用意して、設定ファイルに定義してやれば良いです。
まぁ、秘密鍵と同じディレクトリに置くのはどうかと思いますが。。。
設定ファイルの記載は以下です。
ssl_password_file ディレクティブにパスワードを記載したファイルのパスを指定します。
というのが一つ目の解消法で、もうひとつが以下です。
そもそも、秘密鍵にパスフレーズが設定されていることが原因で、参照できなくなっているので、パスフレーズを外してしまいましょう。
openssl コマンドを使用してパスフレーズを外すことができます。あらかじめ秘密鍵をコピーして、戻せるようにしておきます。
その後、Nginx を再起動してみると問題なく起動して、Webブラウザからも正常にアクセスできるようになります。
おまけその2
Nginx と php-fpm で WordPress など動かしたい場合は、以下で nginx とphp-fpm の連携につい紹介しています。UNIXドメインソケットの設定方法なども記載しているのでぜひどうぞ。
以上です。
↓↓↓ 持っていると便利な一冊。