サーバを引越してnginxにSSLを設定する

覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。

この記事の内容

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