最近、ApacheのSSLをNignxに入れ替えることが多いのでまとめておきます。
Clement Nedelcu、長尾高弘 |
以下は、ApacheからNginxへHTTPS(SSL)を入れ替える手順です。
既存のApacheの設定
既存のApache設定で確認しておきたいのは下記の部分
SSLCertificateFile example.com.crt
SSLCertificateKeyFile example.com.key
SSLCACertificateFile example.in.crt # 中間証明書
いずれのファイルも必要です。中間証明書を利用してる場合のみ、SSLCACertificateFileの設定があると思います。
あとパスフレーズも確認しておきましょう。
Nginx用の証明書を作成する
Nginxでは中間証明書が必要な場合、Apacheの用に別ファイルとして指定するのではなく、1つの証明書ファイルにまとめておきます。
cp example.com.crt example.com.crt.bak # バックアップ
cat example.in.crt >> example.com.crt # 中間証明書を追記
この様にして、1ファイルにまとめた証明書をNginxで利用します。
パスフレーズを削除する場合
HTTPS(SSL)サーバを起動する際に通常はKeyファイルに設定したパスフレーズを入力する必要があります。管理上このパスフレーズを入力せずに起動したい場合、以下のようにしてパスフレーズが解除されたKeyファイルを作成することができます。
openssl rsa -in example.com.key -out example.com.new.key
Enter pass phrase for example.com.key:[パスフレーズを入力]
“unable to load Private Key” と表示された場合、パスフレーズが間違っています。
パスフレーズを解除した鍵の扱いは厳重にしましょう。
Nginxの設定
ここまでで準備したファイルをもとにNginxを以下のように設定します。
server {
listen 443;
ssl on;
ssl_certificate example.com.crt; # 中間証明書を含んだ証明書
ssl_certificate_key example.com.new.key;
}
StartSSLでは、個人利用に限り、無料でSSL証明書を取得できるので、この機会に試してみてはいかがでしょうか。
個人的にはNginxをHTTPS(SSL)プロキシーサーバーとして立てて利用する形が、サーバ構成が複雑になっても融通が効くので、1台だけで完結する場合でも、443ポートでプロキシーサーバとして立ち上げて利用しています。
Clement Nedelcu、長尾高弘 |