さくらのレンタルサーバーでLet's Encryptを使う


ずっと使っていた[StartSSL](https://www.startssl.com)が使えなくなってしまうので、[Let's Encrypt](https://letsencrypt.org)を使いSSLを再設定したので手順をメモしておきます。

# 環境：
* さくらのレンサバ
* macOS Sierra

# 手順:

## 証明書の発行

基本的には[certbotに書かれている手順](https://certbot.eff.org/#osx-other)で行います。

* brewでcertbotをインストールします
	`brew install certbot`

* 以下のコマンドでcertbotをマニュアルモードで証明書を発行します
		_（/etc/letsencrypt以下に保存するためsudo権限が必要です）_

	`sudo certbot certonly --manual -d hogehoge.com`

```
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for hogehoge.com

------------------------------------------
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
------------------------------------------
(Y)es/(N)o: y
```

* IPを記録されるけど良いか？と確認されます。何も悪い事を企んでいないので、迷わずYを押します

```
------------------------------------------
Make sure your web server displays the following content at
http://hogehoge.com/.well-known/acme-challenge/SUrappQZZZZZZZqfmcQzY339-MWX4w before continuing:

SUrappQZZZZZZZqfmcQzY339-MWX4w.XXXXYOhf4ayj-_Uu_S-VVVV

If you don't have HTTP server configured, you can run the following
command on the target server (as root):

....
------------------------------------------
Press Enter to Continue
```

* FTP等でサーバーにアクセスし`/.well-known/acme-challenge/`というディレクトリーを作成します。

* 上記のサンプルの場合は`SUrappQZZZZZZZqfmcQzY339-MWX4w.XXXXYOhf4ayj-_Uu_S-VVVV`と書いたファイルを`SUrappQZZZZZZZqfmcQzY339-MWX4w`という名称で保存します。ユーザー認証等がある場合は一時的に外しておきます。

* 上記の場合だとURL「 http://hogehoge.com/.well-known/acme-challenge/SUrappQZZZZZZZqfmcQzY339-MWX4w 」にアクセスし、レスポンスが返ってくるのを確認します。

* リターンを押すと次に進みます。

	※該当のURLにアクセスできない場合は証明書が発行されません。パス名やファイルの内容を確認してください。テキストの文字列とファイル名は異なりますので注意が必要です（そのままコピペして少し悩みました）

	しばらく待つと証明書が発行されます。

```
Waiting for verification...
Cleaning up challenges
Generating key (2048 bits): /etc/letsencrypt/keys/0000_key-certbot.pem
Creating CSR: /etc/letsencrypt/csr/0000_csr-certbot.pem

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
  /etc/letsencrypt/live/hogehoge.com/fullchain.pem. Your
  cert will expire on 2017-05-10. To obtain a new or tweaked version
  of this certificate in the future, simply run certbot again. To
  non-interactively renew *all* of your certificates, run "certbot
  renew"
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le
```

`/etc/letsencrypt/live/[ドメイン名]/`にファイルが作られます。

## 証明書の設定

さくらのサーバーコントロールパネルを開きます。

* 左メニューから「ドメイン設定」をクリックし、ドメイン一覧より対象のドメインのSSLの証明書の項目から「登録」をクリックします。

![スクリーンショット_2017-02-09_17_35_25.png](https://qiita-image-store.s3.amazonaws.com/0/14768/89fc0f6d-de75-399a-4543-38b22004eb72.png "スクリーンショット_2017-02-09_17_35_25.png")



* デスクトップにファイルをコピーし、「独自SSLの設定」からprivkey.pemをファイル選択し、「秘密鍵をアップロード」します。下記のコマンドでデスクトップにファイルをコピーします。

	`sudo cp /etc/letsencrypt/live/[ドメイン名]/privkey.pem ~/Desktop/`
	
	![スクリーンショット_2017-02-09_17_35_33.png](https://qiita-image-store.s3.amazonaws.com/0/14768/d109c787-e27e-6804-fd7c-fa3342ded666.png "スクリーンショット_2017-02-09_17_35_33.png")
	

* 「証明書のインストール」ではfullchain.pemの内容をコピペして貼り付けます。下記のコマンドでクリップボードにコピーできますので、⌘+Vでペーストします。

	`sudo cat /etc/letsencrypt/live/[ドメイン名]/fullchain.pem | pbcopy`

![スクリーンショット 2017-02-09 17.45.10.png](https://qiita-image-store.s3.amazonaws.com/0/14768/593ab47e-c7fe-8298-b8c3-58d1da3a53e9.png "スクリーンショット 2017-02-09 17.45.10.png")

![スクリーンショット_2017-02-09_17_46_10.png](https://qiita-image-store.s3.amazonaws.com/0/14768/0519707b-cd35-2eb4-9e17-2d59442ebc11.png "スクリーンショット_2017-02-09_17_46_10.png")

* ドメイン一覧より「変更」を押し、「４．SSLの利用をお選びください」で「SNI SSLを利用する」を選択します。

![スクリーンショット_2017-02-09_17_31_00.png](https://qiita-image-store.s3.amazonaws.com/0/14768/0f6cda7f-084d-8d87-d2e5-ba7445c9cd69.png "スクリーンショット_2017-02-09_17_31_00.png")

	以上で完了です。

# メモ

３ヶ月に１回更新の必要はありますが、思ったより簡単に設定することができました。