さくらのVPSにnginxをインストールしSSLサーバ証明書を導入する


さくらのアドベントカレンダー(その2)の13日目です。

さくらでもフロントエンドの開発はばりばり行われていますよー。というのをアピールすべくAndroidの記事を書こうとしていましたが、全く間に合わないので、前回の記事の補足をステマ的にお送りしようと思います。

そろそろ始まります。


こんにちは。

とあることがきっかけでHTTPSで通信したくなり、持っていたVPSにnginxをインストールしてssl証明書を導入したのでその流れを書いておきます。
なにもないところからのスタートのため、おおざっぱにどんどん進みたいと思います。

VPSを借りてください

今回使ったのはさくらのVPSです。
お好きなプランで申し込んでください。
http://vps.sakura.ad.jp/

ちゃんとセキュリティのための設定を諸々してください。今回そのへんの説明は省きます。

VPSにnginxをインストールする

今回はOSを CentOS 7 にしました。そのため以下の解説は CentOS 7 向けになっています。
標準OSにあるのでコントロールパネルからぽちぽちしたらすぐに導入されます。

nginx のインストールは以下のコマンドで行います。

$ sudo yum install nginx

もし見つからない場合は、リポジトリを追加します。

(参考) 本家の解説
/etc/yum.repos.d/nginx.repo を下記の内容で作ります。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

上記 baseurl の OS の部分は centosOSRELEASE の部分は 7 となります。
つまり baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ です。

そのあと、インストールコマンドを以下のように実行します。

$ sudo yum install --enablerepo=nginx nginx

次のように nginx を起動します。

$ sudo systemctl start nginx

ブラウザでアクセスしてデフォルトのページが表示されればOKです。

ドメインを取得します

いちおう こちらのリンクを貼っておきます。
私はここで取り扱っていないTLDが欲しかったので、別途取得しています。
DNSのレコード設定についてはドメインを取得したサービスの説明をご確認ください。
いちおう 弊社の場合のサポート情報のリンクを貼っておきます。

SSLサーバ証明書を用意します

私はドメイン認証のみで良かったので、さくらのSSLラピッドSSL を購入しました。

上記ラピッドSSLのページから購入ページに飛べます。購入の途中でCSRを入力する必要がありますが、CSRの作り方は下記のサイトを参考にしてください。

ジオトラスト社の OpenSSLによるCSR作成手順のページ

(その他参考情報)
弊社サポート情報 CSRの作成 (こちらの情報でいえば 「SureServer for SAKURA のCSR作成手順」が参考になると思います。)

CSRの入力以外では難しいことはありませんので、そのまま購入に進みます。

購入後の流れ

次のように、証明書のダウンロードまで手順が進みます。
さくらの会員宛にメールが送られてきますので、その手順に沿って手続きをする流れになります。

  1. ドメイン使用権の確認
    1. さくらの会員メニューから証明に利用するファイルをダウンロード
    2. ダウンロードしたファイルを申請した FQDN 配下にアップロード
    3. アップロードしたファイルが自動的に検知されてドメイン使用権の確認OK
  2. さくらの会員メニューからSSL証明書のダウンロード

nginx に証明書の導入

中間証明書について

まずラピッドSSLの場合は、上記でダウンロードした証明書の他に中間証明書が必要になります。こちらも送られてきたメールに取得方法が書いてるので入手します。
nginxに設定するのは、上記二つの証明書をつなげた物になりますので、作成しておきます。

鍵ファイルについて

CSRを作成する際に用いた鍵ファイルを設定しますが、
nginxをサービス(デーモン)として起動する場合、パスフレーズを入力できずに起動に失敗するので、鍵ファイルを復号化しておきます(取扱注意)。

$ cp ssl.key ssl.key.org
$ openssl rsa -in ssl.key.org -out ssl.key
$ chmod 400 ssl.key

nginxの設定

nginx の設定は 次のようになります。(抜粋)

    listen       443 default ssl;

    ssl on;
    # 中間証明書と証明書の合体
    ssl_certificate     /path/to/your/cer;
    # 鍵ファイルが暗号化されたままだと起動に失敗する
    ssl_certificate_key /path/to/your/key;

nginx を再起動して、 https://~~~ でアクセスできれば成功です。

$ sudo systemctl reload nginx

まとめ

みんなで レッツHTTPS。