前提条件
以下の条件のもとで、Ubuntu 16.04 LTS
にLet's Encrypt
を導入します。
- Webサーバ(リバースプロキシ)には
nginx
を用いる Let's Encrypt
はapt-get
で入れる
全体の流れ
apt-get
でletsencrypt
をインストールする- ドメインを指定して証明書を生成する
nginx
の設定ファイルに証明書の内容を追加するnginx
を再起動して証明書を有効にする- 3ヶ月以内の間隔で証明書の自動更新をする
1. apt-get
でletsencrypt
をインストールする
いろいろな方法での情報が錯綜しているのですが、apt-get
でさっさと入れてしまうのがよいです。なお、Apache
ですとpython-letsencrypt-apache
も入れる必要があると「非公式解説サイト」に書いてありますが、試していないので分からないです。
$ sudo apt-get install letsencrypt
2. ドメインを指定して証明書を生成する
インストールができたらコマンドを実行して証明書を生成します。ただし、このコマンドは 80番ポート を開けて死活判断するため、すでに 80番ポート で動いているサービス*1は止めておく必要があります。止めておかないと以下のように怒られます。
80番ポートを使用するサービスをちゃんと停止したら、以下のコマンドを実行して証明書を生成しましょう。簡単です。入力するドメイン名はサブドメインを含みます。
$ sudo letsencrypt certonly --standalone -d ここにドメイン名を入れる
初めて Let's Encrypt を利用する場合には連絡用のアドレスが求められ、さらに規約への同意が求められます。
上記のコマンドの結果、Congratulations!
を含んだ以下のような文字列が出てくれば成功です。複数のドメインで取得したい場合は上記コマンドを繰り返します。
$ sudo letsencrypt certonly --standalone -d domain.name IMPORTANT NOTES: - If you lose your account credentials, you can recover through e-mails sent to your@mail.address. - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/domain.name/fullchain.pem. Your cert will expire on 2017-11-03. To obtain a new version of the certificate in the future, simply run Let's Encrypt again. - Your account credentials have been saved in your Let's Encrypt 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 Let's Encrypt so making regular backups of this folder is ideal. - If you like Let's Encrypt, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
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
で入れた場合には関係ありません - 期限が切れたドメインと同じドメインの証明書を再度取得したい場合には、
/etc/letsencrypt/archive
および/etc/letsencrypt/live
配下にある当該ドメインのディレクトリを削除してから再度取得すればよいです*4