約束の地

あの日あの時のキャロの想い出

Ubuntu 16.04 LTS に Let's Encrypt を導入する方法

前提条件

以下の条件のもとで、Ubuntu 16.04 LTSLet's Encryptを導入します。

  • Webサーバ(リバースプロキシ)にはnginxを用いる
  • Let's Encryptapt-getで入れる

全体の流れ

  1. apt-getletsencryptをインストールする
  2. ドメインを指定して証明書を生成する
  3. nginxの設定ファイルに証明書の内容を追加する
  4. nginxを再起動して証明書を有効にする
  5. 3ヶ月以内の間隔で証明書の自動更新をする

1. apt-getletsencryptをインストールする

いろいろな方法での情報が錯綜しているのですが、apt-getでさっさと入れてしまうのがよいです。なお、Apacheですとpython-letsencrypt-apacheも入れる必要があると「非公式解説サイト」に書いてありますが、試していないので分からないです。

$ sudo apt-get install letsencrypt

2. ドメインを指定して証明書を生成する

インストールができたら以下のコマンドで証明書を生成します。簡単です。入力するドメイン名はサブドメインを含みます。

ただし、このコマンドは 80番ポート を開けて死活判断するため、すでに 80番ポート で動いているサービス*1は止めておく必要があります

$ sudo letsencrypt certonly --standalone -d ここにドメイン名を入れる

上記のコマンドの結果、Congratulations!という文字列が出てくれば成功です。

3. nginxの設定を追加し、再起動して証明書を有効にする

nginxに証明書を適用するために、設定を書き加えます。/etc/nginx/sites-available/defaultを編集しましょう*2

主要な追記(変更)内容は以下のところです。

server {
  listen 443;
  ssl on;
  server_name ここにドメイン名を入れる;
  ssl_certificate /etc/letsencrypt/live/ここにドメイン名を入れる/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ここにドメイン名を入れる/privkey.pem;
  (省略)
}

4. nginxを再起動して証明書を有効にする

nginxを再起動しましょう。証明書が有効になっていることが確認できれば OK です。

$ sudo service nginx restart

5. 3ヶ月以内の間隔で証明書の自動更新をする

Let's Encryptはそのポリシーから、発行から3ヶ月で有効期限に達します。したがって、3ヶ月以内の間隔で定期的に更新をしてあげる必要があります*3

もっとも、更新方法は簡単です。以下のコマンドを実行するだけです。

$ sudo letsencrypt renew

このコマンドが実行された際は証明書取得時と同じく、80 番ポート へのアクセスがあります。したがって実際にはnginxを止めてこのコマンドを実行し、実行し終わったらnginxを再起動する、という流れになるでしょう。その内容をシェルスクリプトなどにして3ヶ月以内の間隔で実行すれば、ずっと証明書が有効になります。

補足

  • /etc/letsencrptディレクトリは、証明書を一つでも発行して初めて生成されるディレクトリなので、letsencryptをインストールした直後には存在しません
  • 非公式解説サイト」に出てくるcertbot-autoというコマンドは現時点(2017/07/09)においてapt-getで入れた場合には関係ありません

参考(大感謝)

*1:nginxでしょうが

*2:/etc/nginx/sites-enabled/ 配下にドメインごとに分割した設定ファイルを置く場合はこの限りではありません

*3:最新の更新からあまり経っていないと「まだ必要ないよ」と言われますが

Powered by はてなブログ