Let's Encrypt ワイルドカード証明書の取得手順メモ

クラウド
クラウド
スポンサーリンク

2018年3月14日 SSL/TLS証明書を無料で発行してくれる認証局 Let's Encrypt がワイルドカード証明書の発行に対応しました。たくさんのサブドメインを管理している方には、待ちに待った機能ではないでしょうか。そこで今回は、Let's Encrypt でワイルドカード証明書を取得する手順をまとめてみました。

ワイルドカード証明書を取得する場合のポイント

Let's Encrypt でワイルドカード証明書を発行する場合のポイントは次の通りです。(2018年3月15日現在)

●ワイルドカード証明書は ACMEv2 でのみ使用できる
 ACMEv2 のエンドポイント https://acme-v02.api.letsencrypt.org/directory を --server オプションで指定する必要があります。
 
●ACMEv2 をサポートしたクライアントが必要
 Certbot バージョン 0.22.0 以上で ACMEv2 がサポートされています。
 参考資料:ACME Client Implementations

●DNS-01チャレンジタイプでの検証が必要
 ワイルドカード証明書を取得する際に DNSサーバーの TXTレコードを変更する必要があります。

●ほとんどの場合はワイルドカードではない証明書の使用がオススメ
 上記のようにワイルドカードの証明書の更新は、DNS-01チャレンジタイプで検証するため基本的には手作業になります。Let's Encrypt の「証明書の自動更新」という大きなメリットが失われてしまうので、特殊な用途を除いては通常の証明書を使うのがよいでしょう。

参考資料:
ACME v2 and Wildcard Certificate Support is Live
ACME v2 Production Environment & Wildcards

ワイルドカード証明書の取得

では実際に Let's Encrypt でワイルドカード証明書を取得してみましょう。

EPELリポジトリから certbot をインストールします。

yum -y install epel-release
yum -y install certbot

ACMEv2 に対応しているバージョン 0.22.0 以上であることを確認します。

certbot --version
certbot 0.22.0

certbot コマンドを以下のオプションで実行します。

certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns \
-d *.example.com -d example.com \
-m sample@example.com \
--agree-tos \
--manual-public-ip-logging-ok

--server https://acme-v02.api.letsencrypt.org/directory
 ワイルドカード証明書を取得する場合は ACMEv2 のエンドポイントを指定します。

--preferred-challenges dns
 DNS-01チャレンジタイプで検証するように指定します。

-d *.example.com -d example.com
 ワイルドカード証明書に加えて、サブドメイン無しの証明書も含めて取得します。

-m sample@example.com
 メールアドレスを指定します。証明書の更新期限が近づくと、ここで指定したメールアドレス宛にお知らせメールが届きます。

--agree-tos
 Let's Encrypt の利用規約に同意します。事前に利用規約「https://letsencrypt.org/repository/」を確認しておきましょう。

--manual-public-ip-logging-ok
 サーバーの IPアドレスがログに記録され公開されることを許可します。
 

コマンドを実行すると DNSサーバーに登録する TXTレコードが表示されます。

-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
 
sg5c_j37WuxggEnX9mriWvR3IBf_vhBZuOxGGIcTtxk
 
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue

実際に登録する TXTレコードは次のようになります。値の部分はクオートしておきましょう。

_acme-challenge.example.com. IN TXT "sg5c_j37WuxggEnX9mriWvR3IBf_vhBZuOxGGIcTtxk"

DNSサーバーに TXTレコードを登録したらエンターを押します。

下のような表示がされれば取得成功です。

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/apar.jp/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/apar.jp/privkey.pem
Your cert will expire on 2018-06-13. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:

証明書や秘密鍵は「/etc/letsencrypt/archive/」以下に保存され、下記の場所にシンボリックリンクが作成されます。証明書を更新するたびに、 シンボリックリンクのリンク先を、新しい証明書に変更してくれます。

証明書
/etc/letsencrypt/live/<ドメイン名>/cert.pem

証明書+中間CA証明書
/etc/letsencrypt/live/<ドメイン名>/fullchain.pem

秘密鍵
/etc/letsencrypt/live/<ドメイン名>/privkey.pem

中間CA証明書
/etc/letsencrypt/live/<ドメイン名>/chain.pem

 
発行された証明書をブラウザで表示してみると、ワイルドカード証明書であることが確認できると思います。

Let's Encrypt が発行したワイルドカード証明書

おわりに

TXTレコードを自動で登録する仕組みを作ってしまえば、ワイルドカード証明書でも自動更新ができますが、なかなかハードルが高いです。ワイルドカード証明書でも簡単に自動更新ができるようになるといいですね。

コメント

タイトルとURLをコピーしました