既にいろいろな方が記事を上げてくださっていますが、自分用メモに。
以下を参考にしました。
- http://qiita.com/sak_2/items/ff835b669c0a7e110b09
- http://qiita.com/hidekuro/items/482520f220a305dc147b
環境
- Ubuntu 14.04 LTS
- Nginx 1.4.6
- Git 1.9.1
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
$ nginx -V
nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
$ git --version
git version 1.9.1
手順
ほぼ参考リンクそのままの箇所も少なくないですが、一貫した手順となるよう残しておきます。
letsencrypt の取得
letsencrypt リポジトリから、一式取得したうえで、中に含まれる letsencrypt-auto
を実行します。
$ git clone https://github.com/letsencrypt/letsencrypt.git
$ cd letsencrypt/
$ ./letsencrypt-auto --help
証明書の取得に必要な情報を収集
以下が必要になります。
- SSL 化するサイトの FQDN (インターネット上で名前解決可能な、A レコード登録済みのもの)
- Nginx で公開されているコンテンツディレクトリ
今回は、FQDN を仮に www.encrypt.local
としておきます。
コンテンツディレクトリについては調べます。
Ubuntu では、Nginx 側の設定を大きく変更していない場合は、以下例のとおり /usr/share/nginx/html
がコンテンツディレクトリとなっていることが多いかと思います。
$ cat /etc/nginx/sites-available/default | grep 'root' | grep -v '#'
root /usr/share/nginx/html;
証明書の取得
ここまでに集めた情報を使用して、さっそく証明書を取得してみます。
$ ./letsencrypt-auto certonly --webroot -w /usr/share/nginx/html -d www.encrypt.local
コマンドが流れるとメールアドレスを要求されるため、入力します。ドメイン取得時に使用したメールアドレスを設定しておくのが良いかと思います。
利用規約の同意を求められるため、<Agree >
を選択します。
証明書が無事に取得できると、以下のようなメッセージが表示されます。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/www.encrypt.local/fullchain.pem. Your cert will
expire on 2016-07-31. To obtain a new version of the certificate in
the future, simply run Let's Encrypt again.
- 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
メッセージのとおり、証明書は /etc/letsencrypt/live/www.encrypt.local/fullchain.pem
に出力されているため、確認しておきます。
$ sudo ls /etc/letsencrypt/live/www.encrypt.local/
cert.pem chain.pem fullchain.pem privkey.pem
これらのうち、fullchain.pem
と、privkey.pem
を使用します。
Nginx へ設定
ここまできたら、通常と至って変わらない、Nginx への SSL 設定を行うのみです。
server {
listen 443;
server_name www.encrypt.local;
root html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.encrypt.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.encrypt.local/privkey.pem;
証明書の自動更新を設定
Let's Encrypt の証明書は、3ヵ月で期限が切れてしまいます。
そのため、証明書を自動で更新できるよう、cron を設定しておきます。
また、この折 Nginx のリロードを行なうため、root ユーザーで cron を設定します。
$ which service
/usr/sbin/service
$ sudo su
# crontab -e
0 4 1 * * /home/{username}/.local/share/letsencrypt/bin/letsencrypt certonly --webroot -w /usr/share/nginx/html -d www.encrypt.local --renew-by-default && /usr/sbin/service nginx reload
すこし手順はありますが、非常に簡単に、SSL 化ができました。
下手にオレオレ証明書を用意するよりも簡単な気がします。
設定を終え、このページを書き終えた後に、
以下のページも参考になるなあと、遅れて見つけた次第。
すでに、いろいろな方が実践的に使い始めているようですね!