サーバを引越してnginxにSSLを設定する
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。
この記事の内容
SSLごとサーバ引越しをする手順を載せてます。
旧サーバApache2.2で稼働してるSSL付きのWebサイトを、新しいサーバにSSLごと引越しnginxに切り替えます。
※SSLの契約やサーバの状況など諸条件により本記事のとおりにできないケースがあります。
nginxにSSLを設定する経緯
当サイト(aulta.co.jp)のことなんですが、サーバを引っ越しました。
以前は、さくらのVPS 2G でLAMP環境でApacheです。
今回は、さくらのVPS 4G でkusanagi環境でnginxにしました。
https のSSL化をしていたのですが、当時Let’s Encrypt(無料SSL)は様子見をしていたところなので、SSLストアからFujiSSLを契約していました。
SSLの契約期間が、2020年4月まで残ってます。
この機会に Let’s Encrypt に切り替えようかと思ったのですが、まだ1年以上残っているしもったいないなぁということで、FujiSSLも一緒に引っ越すことにしました。
Let’s Encrypt の罠が理由の1つでもあります。
新サーバで設定 => DNSあててないのでエラー。
新サーバにDNSあて・・・る?
DNSがスグ変わるようにしていなければ「浸透待ち」が発生しますね。
切り替わるまでどうしましょう・・・TTL?
ということで、とりあえず今回はFujiSSLを継続して、次回は Let’s Encrypt にすることにしました。
実施
旧サーバからSSLのファイルを取得
稼働中の旧サーバから次のファイルをダウンロードします。
ssl-aulta.co.jp-2017.key
ssl-aulta.co.jp-2017.crt
ssl-aulta.co.jp-2017.ca
そういえばファイル名とか保存場所は「ここ」って決まりはないので自分で探してください。とりえあず key と crt と ca の3つが必要です。
※Apache 2.2系は ca のファイルが必要です。Apache 2.4系なら ca のファイルは不要です。
SSLファイルの場所が分からない場合
rootユーザーになって
httpd -S
port 443 の対象のドメインのところに conf へのパスがあります。
見つかった conf を開いてみます。
vi /・・・/・・・.conf
SSLCertificateFile /・・・/ssl-aulta.co.jp-2017.crt
SSLCertificateKeyFile /・・・/ssl-aulta.co.jp-2017.key
SSLCertificateChainFile /・・・/ssl-aulta.co.jp-2017.ca
SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile に書かれているファイルがそうです。
ファイルを結合
ファイルをダウンロードしてきたら、crt と ca のファイルを結合します。
Apache2.4系の場合、ca ファイルは存在してなく、もともとこの状態になっているはずなのでここの作業は不要です。
まず、ssl-aulta.co.jp-2017.crt と ssl-aulta.co.jp-2017.ca をエディタで開きます。
ssl-aulta.co.jp-2017.ca の内容をまるごとコピーし、ssl-aulta.co.jp-2017.crt の末尾に貼り付けます。
ssl-aulta.co.jp-2017.crt を保存してエディタを閉じます。
ssl-aulta.co.jp-2017.ca はもう不要なので削除して構いません。
新サーバにSSLファイルをアップロード
次の2つのファイルを新サーバにアップします。
ssl-aulta.co.jp-2017.key
ssl-aulta.co.jp-2017.crt
配置する場所はどこでも構いませんが、 root ユーザーのみアクセス可能とします。
chown root:root /・・・/ssl-aulta.co.jp-2017.key
chown root:root /・・・/ssl-aulta.co.jp-2017.crt
chmod 0400 /・・・/ssl-aulta.co.jp-2017.key
chmod 0400 /・・・/ssl-aulta.co.jp-2017.crt
nginxに設定を記述
設定ファイルの場所やファイル名は人によって違うと思いますが、対象ドメインの conf を開きます。
今回は下記のファイルとします。
kusanagi で nginx なら同じ場所にあると思います。
vi /etc/nginx/conf.d/aulta_ssl.conf
割とうえのほうにssl_certificate、ssl_certificate_key ってなってるとこがあります。
もともとある内容は先頭に # を付けてコメントにしておきましょうか。
んで、アップロードしたキーのパスにしたものを加えます。
# ssl_certificate /etc/pki/tls/certs/localhost.crt;
# ssl_certificate_key /etc/pki/tls/private/localhost.key;
ssl_certificate /・・・/ssl-aulta.co.jp-2017.crt;
ssl_certificate_key /・・・/ssl-aulta.co.jp-2017-no-pass.key;
再起動して反映
kusanagi環境の場合ならkusanagiを再起動します。
kusanagi restart
普通にnginxを使っているならnginxを再起動します。
nginx -s reload