Let's Encryptを使ってみる(CentOS7)

# Let's Encryptを使ってみる(CentOS7)

## 前提
これをちらっとでも読もうという人は「証明書ってなに？」という人はいないと思いますが・・・
「Let's Encryptで証明書を取得する@CentOS7」以上のことは書いておりません(/・ω・)/ご承知おきを。

## 確認環境
「さくらのVPS」 http://vps.sakura.ad.jp/
カスタムOSインストール:CentOS7
での確認となります。
以下ルート権限での作業となります。

また架空のドメイン名「hogehogeboon.jp」を使って説明しています。
（2016/10/9現在、このドメイン名はいないけど・・・。）
適宜自分の所有しているドメイン名と置き換えてください。

## 前準備
### もしもgitが入っていなければ・・・
さくっと入れましょう。

```shell-session
# yum install git
````

## 取得～設定
### CertbotクライアントをGitHubから取得
/opt以下に取得したものを置くこととします。

```shell-session
# cd /opt
# git clone https://github.com/certbot/certbot
````

### certbot-autoで環境確認

certbot-autoコマンドでCertbotクライアントが実行できる環境か確認します。

```shell-session
# cd /opt/certbot
# ./certbot-auto
````

はい、なんとなくうまくいったかなと思いきや・・・
「Certbotちゃんはこのシステム上でWEBサーバーが動いているか解らないでやんす。"certbot-auto certonly"でマニュアル設定してヨロシクやってチョ！」と。
![CantConfigureAutomatically.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/2cec1dac-b5d7-e5ae-6038-90c740557efe.jpeg)

### certbot-auto certonlyや！
というわけでそう言われたならそうするまでよと。。。

わたくしが（仮ですよ）hogehogeboon.jpというアドレスの持ち主として・・・

```shell-session
# ./certbot-auto certonly --standalone -d hogehogeboon.jp 
````

### ちょっぴり怒られた

「80番のポートだれか使ってますよ」と。。。
Certbotさん、証明書発行するのに一時的にとはいえ80番使うのね。。。
![Port80Open.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/c8f451a9-31da-bf40-4f00-87b8f41998de.jpeg)

ワタクシはnginx使ってるので

```shell-session
# systemctl stop nginx
````
自分の使っているWEBサーバーを止めてください。

### もいっぺんcertbot-auto

```shell-session
# ./certbot-auto certonly --standalone -d hogehogeboon.jp -d www.hogehogeboon.jp
````

メールアドレスの確認があります。緊急通知や鍵を紛失した時の復旧用途とのこと。
![ConfirmEmail.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/3f2c40a2-abeb-05d6-b570-0fc64c5b47ac.jpeg)

はい、よい子はちゃんと読んで承諾しましょう。Agreeぽちっと。
![Agree.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/176c060d-2443-a190-08e1-3d02acde51c4.jpeg)


そうすると
![CreateCert.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/c4457477-7cd0-a4b3-4326-3e2f787f16bb.jpeg)


## 証明書できた！

/etc/letsencrypt/live/ドメイン名/fullchain.pem できたよ！とお褒めの言葉が。

```shell-session
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/hogehogeboon.net/fullchain.pem. Your cert will
   expire on 2017-01-07. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot-auto again. To
   non-interactively renew *all* of your certificates, run
   "certbot-auto renew"
````

### 証明書はというと・・・

それでは/etc/letsencrypt/live/hogehogeboon.jp/の中身を見てみましょう。

```shell-session
cert.pem -> ../../archive/hogehogeboon.jp/cert1.pem　（サーバー証明書）
chain.pem -> ../../archive/hogehogeboon.jp/chain1.pem　（中間証明書）
fullchain.pem -> ../../archive/hogehogeboon.jp/fullchain1.pem　（サーバー証明書＋中間証明書）
privkey.pem -> ../../archive/hogehogeboon.jp/privkey1.pem　（秘密鍵）
````
実態はarchive側になります。

## ご注意
Let's Encryptで取得した証明書の期限は「90日」なので、
ワタクシみたいなボンヤリさんはcronでも組んでおくのが吉です。

## おまけ
証明書をどうするかはその人次第ですが・・・nginxで使ってみましょう。

/etc/nginx/conf.d/hogehogeboon.jp.confを作成。
SSLを有効に、サーバー証明書＋中間証明書と秘密鍵を指定します。

```shell-session
server{
        listen 443 default ssl;
        server_name hogehogeboon.jp;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/hogehogeboon.jp/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hogehogeboon.jp/privkey.pem;
        root /var/www/hogehogeboon.jp;
        index index.html index.htm;
}
````

nginx起動

```shell-session
# systemctl start nginx
```

ブラウザでアクセス
あら素敵、鍵付きhttpsで動きました。
![https.JPG](https://qiita-image-store.s3.amazonaws.com/0/138460/2a838c71-41db-c544-957e-7ecb56b777ae.jpeg)

## 謝辞

こちらを参考にさせていただきました。（というか追試ですね。。。）
ありがとうございました。

Let's Encrypt 総合ポータル
https://letsencrypt.jp/