Let's Encryptの証明書の取得・設定

今回はLet's Encryptの証明書を取得・設定をします。

前回同様の環境です。
**〜さくらのVPS 1Gプラン〜**
メモリ：1G
CPU：仮想2Core
ストレージ：HDD 100GB
OS：CentOS 7（カスタムOS）

仮として、アカウント名はrootもしくはabc123、ドメインはabc.comとします。

#はじめに
Terminalでログインできていることを前提とする。

```
[root@abc ~]# 
```

#1．Let's Encryptをインストールする
次のコマンドを実行し、Let's Encryptをインストールする。

```
[root@abc ~]# yum -y install certbot python2-certbot-apache
```
```
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp

〜省略〜

  python2-mock.noarch 0:1.0.1-9.el7                                             
  python2-parsedatetime.noarch 0:2.4-5.el7                                      
  python2-pyasn1.noarch 0:0.1.9-7.el7                                           
  python2-pyrfc3339.noarch 0:1.0-2.el7                                          
  python2-requests.noarch 0:2.6.0-0.el7                                         
  python2-six.noarch 0:1.9.0-0.el7                                              

完了しました!
[root@abc ~]# 
```

#2．証明書を取得する
※2018年1月中旬頃から取得方法が変更となった。
※2021年4月現在、取得時の文言が変更となった。（時期不明）
Qiitaの他の記事に書かれている方法など、以前の方法では取得できない。
例として、a1b2c3.abc.comの証明書を取得しようとする。
次のコマンドを実行し、証明書を取得する。

```
[root@abc ~]# sudo certbot --authenticator standalone --installer apache -d a1b2c3.abc.com --pre-hook "apachectl stop" --post-hook "apachectl start"
```
初回のみ、管理者のメールアドレスを求められるので入力し、returnキーを押す。

```
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): 
```
同じく初回のみ、同意するか聞かれるので"Y"を入力し、returnキーを押す。

```
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): support@abc.com
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(Y)es/(N)o: 
```
Let's Encryptパートナーにメールアドレスを公開していいか聞かれるので"N"を入力し、returnキーを押す。（公開してもいいなら"Y"を入力する。）

```
(Y)es/(N)o: : Y

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
-------------------------------------------------------------------------------
(Y)es/(N)o: 
```
httpsにリダイレクトするか聞かれるので"2"を入力し、returnキーを押す。（リダイレクトしたくないなら"1"を入力する。）

```
(Y)es/(N)o: N
Running pre-hook command: apachectl stop
Obtaining a new certificate
Resetting dropped connection: acme-v01.api.letsencrypt.org
Performing the following challenges:
http-01 challenge for a1b2c3.abc.com
Waiting for verification...
Cleaning up challenges
Running post-hook command: apachectl start
Created an SSL vhost at /etc/httpd/conf/httpd-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf/httpd-le-ssl.conf
Enabling site /etc/httpd/conf/httpd-le-ssl.conf by adding Include to root configuration

～省略～
```
完了すると通常の画面に戻る。

```
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/a1b2c3.abc.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/a1b2c3.abc.com/privkey.pem
   Your cert will expire on 2019-10-10. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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

[root@abc ~]# 
```

ブラウザでhttps://a1b2c3.abc.com でアクセスしてみる。
SSL証明書を表示し、発行元がLet's Encrypt Authority X3であること、証明書が有効であることを確認する。
失敗したら最初からやり直す。

**注意**
Let's Encryptの証明書は発行枚数が制限されている。
~~1週間に20枚発行すると翌週の同曜日・同時刻まで発行できない。~~
→時期は不明だが、1週間に50枚まで発行が可能になった模様。（2019年12月9日訂正）
上限に達している中で発行操作をすると、上限に達している旨のメッセージが表示される。
それどころか、次に発行できるまでの期間がさらに1週間伸びてしまう。
制限解除の前日に取得操作をするとそこから1週間発行できないため、最後に発行できたときから約2週間発行できない状態となる。
現時点で1週間以内に50枚発行したか、また、発行から1週間経過したかをよく確認して操作をしていただきたい。
確認を怠ると永遠と発行ができなくなってしまう恐れがある。