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 certbot
ACMEv2 に対応しているバージョン 0.22.0 以上であることを確認します。
certbot 0.22.0
certbot コマンドを以下のオプションで実行します。
--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レコードは次のようになります。値の部分はクオートしておきましょう。
DNSサーバーに TXTレコードを登録したらエンターを押します。
下のような表示がされれば取得成功です。
- 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
発行された証明書をブラウザで表示してみると、ワイルドカード証明書であることが確認できると思います。
おわりに
TXTレコードを自動で登録する仕組みを作ってしまえば、ワイルドカード証明書でも自動更新ができますが、なかなかハードルが高いです。ワイルドカード証明書でも簡単に自動更新ができるようになるといいですね。
コメント