More than 1 year has passed since last update.

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

環境

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

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

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

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.