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

さくらのアドベントカレンダー（その２）の13日目です。

さくらでもフロントエンドの開発はばりばり行われていますよー。というのをアピールすべくAndroidの記事を書こうとしていましたが、全く間に合わないので、[前回の記事](http://qiita.com/t-mimura/items/d6541ec596bdebea5a7b#%E7%92%B0%E5%A2%83%E4%BD%9C%E6%88%90)の補足をステマ的にお送りしようと思います。

そろそろ始まります。

---
こんにちは。

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

# VPSを借りてください

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

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

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

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

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

```bash
$ sudo yum install nginx
```

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

(参考) [本家の解説](https://nginx.org/en/linux_packages.html#mainline)
/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 の部分は `centos` 、 `OSRELEASE` の部分は `7` となります。
つまり `baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/` です。

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

```bash
$ sudo yum install --enablerepo=nginx nginx
```

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

```bash
$ sudo systemctl start nginx
```

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

# ドメインを取得します

いちおう [こちら](http://www.sakura.ne.jp/domain/)のリンクを貼っておきます。
私はここで取り扱っていないTLDが欲しかったので、別途取得しています。
DNSのレコード設定についてはドメインを取得したサービスの説明をご確認ください。
いちおう 弊社の場合の[サポート情報](https://help.sakura.ad.jp/hc/ja/articles/206053042-%E3%81%95%E3%81%8F%E3%82%89%E3%81%A7%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%BE%E3%83%BC%E3%83%B3%E7%B7%A8%E9%9B%86)のリンクを貼っておきます。


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

私はドメイン認証のみで良かったので、[さくらのSSL](https://ssl.sakura.ad.jp/)で[ラピッドSSL](https://ssl.sakura.ad.jp/rapid_ssl.html) を購入しました。

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

[ジオトラスト社の OpenSSLによるCSR作成手順のページ](https://www.geotrust.co.jp/support/ssl/csr/apache_openssl_new.html)

(その他参考情報)
[弊社サポート情報 CSRの作成](https://help.sakura.ad.jp/hc/ja/articles/206056042-CSR%E3%81%AE%E4%BD%9C%E6%88%90) (こちらの情報でいえば 「SureServer for SAKURA のCSR作成手順」が参考になると思います。)

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

## 購入後の流れ

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

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

# nginx に証明書の導入

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

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

```bash
$ 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://～～～` でアクセスできれば成功です。

```bash
$ sudo systemctl reload nginx
```

# まとめ

みんなで レッツHTTPS。