Let’s Encryptは、Webサイトが安全にデータをやり取りできるよう、無料のSSL/TLS証明書を発行してくれる非営利の認証局です。証明書の発行は無料かつ自動化されており、誰でも短時間で導入できます。

本記事では、証明書取得ツール「certbot」を使い、Windows環境とUnix系環境(Ubuntu/CentOS)それぞれでLet’s Encrypt証明書を申請する手順を解説します。なお、証明書の有効期限は発行日から90日間です。

事前に確認しておくこと

  • 申請するドメインの所有権があること
  • ドメインのDNS設定(TXTレコード)を追加できる管理画面にアクセスできること
  • Windowsの場合は管理者権限、Unix系の場合はroot/sudo権限があること

一、Windowsシステムでの申請手順

1. certbotツールをダウンロード

以下のURLからインストーラーをダウンロードします。

https://dl.eff.org/certbot-beta-installer-win32.exe

2. インストーラーを実行し、「はい」を選択

ダウンロードしたインストールファイルをクリックすると、ユーザーアカウント制御(UAC)のダイアログが表示されます。「不明な発行元」と表示されますが、公式のcertbotインストーラーであるため、「はい」を選択して進めます。

ユーザーアカウント制御ダイアログ

3〜5. セットアップウィザードを進める

「Next」→「Install」→「Finish」の順にクリックし、インストールを完了させます。

certbotインストーラーの完了画面

6. PowerShellを管理者として実行

検索バーに「powershell」と入力し、「Windows PowerShell」を右クリックして「管理者として実行」を選択します。

7. certbotの動作確認

以下のコマンドを入力し、certbotが正しくインストールされているか確認します。

certbot –version

8. 証明書の申請コマンドを実行

以下の例では example.jp というドメインを使用しています。ご自身が所有しているドメインに置き換えてください。ここではDNS認証を使い、ワイルドカード証明書(サブドメインを含む証明書)を申請します。

certbot certonly –manual –preferred-challenges dns -m noc@example.com -d *.example.jp -d example.jp
  • -m の後ろ:ご自身のメールアドレスに置き換えてください
  • -d の後ろ:ご自身のドメインに置き換えてください

9〜10. 利用規約への同意とEFFへのメール提供確認

デバッグログファイルの保存先が表示されたのち、Let’s Encryptの利用規約に同意するか(y)を入力するよう求められます。続けて、Electronic Frontier Foundation(EFF)にメールアドレスを提供するかどうかも確認されます(任意で n を選択可能)。

PowerShellでのcertbotコマンド実行画面

11. DNSにTXTレコードを追加

画面に表示された内容にしたがい、ドメイン管理画面でTXTレコードを追加します。ホスト名は _acme-challenge、値には画面に表示された文字列を入力します。

ドメイン管理画面でのTXTレコード追加

12. TXTレコードが反映されたか確認

ブラウザで任意のTXTレコード確認ツール(MXToolboxなど)を開き、追加したTXTレコードが正しく反映されているか確認します。

13. Enterキーを押して証明書を取得

TXTレコードの反映を確認したら、PowerShellの画面に戻って Enter キーを押します。検証に成功すると、証明書と秘密鍵の保存先パスが表示されます。証明書の有効期間は90日間です。

TXTレコード確認と証明書発行成功画面

二、Unix系システムでの申請手順

Ubuntu(18.04以降)の場合

certbotのインストールにはsnapを使用します。以下のバージョン以降にはsnapがプリインストールされています。

# snapを最新化
sudo snap install core; sudo snap refresh core
# certbotをインストール
sudo snap install –classic certbot

CentOS 7の場合

yum install snapd -y
systemctl enable –now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install certbot –classic
/var/lib/snapd/snap/bin/certbot –version
ln -s /var/lib/snapd/snap/bin/certbot /usr/bin/certbot
certbot –version

1. certbotの動作確認

certbot –version

2. 証明書の申請コマンドを実行

以下の例では example.jp というドメインを使用しています。ご自身が所有しているドメインに置き換えてください。Windowsの場合と同様に、DNS認証でワイルドカード証明書を申請します。

certbot certonly –manual –agree-tos \
-d “*.example.jp” \
-d “example.jp” \
–email noc@example.com \
–preferred-challenges dns \
–manual-public-ip-logging-ok \
–server https://acme-v02.api.letsencrypt.org/directory
  • --email の後ろ:ご自身のメールアドレスに置き換えてください
  • -d の後ろ:ご自身のドメインに置き換えてください

3. EFFへのメール提供確認

システムからEFFにメールアドレスを提供するかどうか尋ねられます。任意で選択してください。

Unix系ターミナルでのcertbotコマンド実行画面

4. DNSにTXTレコードを追加

ドメイン管理画面に戻り、画面の指示にしたがってTXTレコードを追加します。手順はWindowsの場合と同様です。

5. TXTレコードが反映されたか確認

ブラウザでTXTレコード確認ツールを開き、レコードが正しく反映されているか確認します。

6. Enterキーを押して証明書を取得

反映を確認したら、ターミナルに戻って Enter キーを押します。検証が成功すると、証明書と秘密鍵の保存先パスが表示されます。証明書の有効期間は90日間です。