Let’s Encryptの導入

サーバのSSL化をするに当たり,Let’s Encryptを利用してみました.

Let’s Encryptは,フリーで証明書を取得できる認証局です.コマンド一つで取得できます.

  • https://letsencrypt.org/

ここでは,Ubuntuのnginxへの導入をしました.

certbotの導入

gitコマンドでcloneして,ディレクトリに移動します.

git clone https://github.com/certbot/certbot
cd certbot

certbot-auto コマンドで証明書の取得

今回は,nginxで80番ポートを利用しているため, --webrootプラグインを使って発行します.

–wbrootプラグインの場合,ドキュメントルート以下にディレクトリ .well-known/acme-challenge 内にファイルを作成し,そのファイルを確認する仕組みとなります.そのため,nginxのconfに追記をします.

    location /.well-known/acme-challenge/ {
      default_type "text/plain";
      root         /var/www/example;
    }

certbot-autoコマンドで証明書を取得します.以下の場合は,対話形式による確認をスキップします.

./certbot-auto certonly --webroot -w /var/www/example -d www.exmaple.com -m sample@example.com --agree-tos --force-renewal -n

nginxに証明書のパスを指定

nginxのconfに作成された証明書のパスを指定してリロードします


listen 443 ssl; ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;

cronに証明書更新の設定

この証明書は3ヶ月で更新する必要があるため,cronで証明書を自動更新するように設定する必要があります.

0 5 1 * * /root/certbot/certbot-auto renew && /usr/sbin/nginx -s reload