本記事は広告(アフィリエイト)を含みます。
「http://」のままサイトを公開すると、ブラウザに「保護されていない通信」と表示され、訪問者に不安を与えてしまいます。SSL化(https化)は今や個人サイトでも必須ですが、実は無料で、しかも自動更新までしてくれる仕組みがあります。それが「Let’s Encrypt」です。
Let’s Encryptとは
Let’s Encryptは非営利団体が提供する無料の証明書発行サービスです。有料のSSL証明書と暗号強度自体に大きな差はなく、個人サイト・中小企業サイトであれば無料版で十分なケースがほとんどです。証明書の有効期限は90日と短めですが、更新作業はツール(Certbot)で自動化できます。
取得方法の全体像
- ドメインのDNS Aレコードを、サーバーのIPアドレスに向ける
- DNSの反映を待つ(数分〜数時間、環境によっては最大24時間程度)
- Certbotをインストールする
- Certbotでドメイン所有権を確認し、証明書を発行する
- Webサーバー(Nginx等)の設定にSSL証明書を反映する
- 自動更新のためのスケジュール設定を確認する
Docker構成での注意点
WordPressをDocker(Nginxコンテナ)で運用している場合、少しだけ注意が必要です。Certbotがドメイン所有権を確認する際、指定のURL(/.well-known/acme-challenge/)にアクセスできる必要がありますが、Nginxがコンテナの中で動いていると、ホスト側に直接インストールしたCertbotから見えないことがあります。
解決策としては主に2つあります。
- webroot方式: Nginx側で
/.well-known/acme-challenge/へのアクセスを、Certbotと共有するフォルダに向けておく。あらかじめNginxの設定ファイルにこの受け口を用意しておけば、証明書取得時に特別な再起動が不要 - certbotコンテナ方式: certbot公式のDockerイメージを使い、Nginxコンテナと同じボリュームを共有させて証明書を発行する
どちらの場合も、事前にNginxの設定ファイルへ受け口(ロケーション)を用意しておくと、後からの作業がスムーズです。
自動更新を忘れずに
Let’s Encryptの証明書は90日で失効します。Certbotには自動更新用のコマンドが用意されているので、cronやsystemdタイマーに登録しておけば、以降は基本的に手動作業なしで維持できます。
まとめ
SSL化は「難しそう」という印象を持たれがちですが、Let’s Encrypt + Certbotの組み合わせなら費用ゼロで、かつ一度仕組みを作れば自動更新まで面倒を見てくれます。ドメインを取得したら早めに着手しておきたい作業です。