LoginSignup
20
17

More than 5 years have passed since last update.

Let's Encrypt で SSL 化対応 (Ubuntu 14.04 LTS x Nginx)

Posted at

既にいろいろな方が記事を上げてくださっていますが、自分用メモに。
以下を参考にしました。

環境

  • 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 設定を行うのみです。

/etc/nginx/sites-enabled/default
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
crontab
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 化ができました。
下手にオレオレ証明書を用意するよりも簡単な気がします。

設定を終え、このページを書き終えた後に、
以下のページも参考になるなあと、遅れて見つけた次第。

すでに、いろいろな方が実践的に使い始めているようですね!

20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17