blog.comame.xyz

Let's Encrypt でワイルドカード証明書を取得してみたら驚くほど簡単だったので、記事として残しておきます。

ワイルドカード証明書とは

ワイルドカード証明書とは、サブドメイン全てに一致する証明書です。例えば *.example.com で取得した証明書は、sub1.example.comsub2.example.com に一致します 。

ワイルドカード証明書を使用することで、サブドメイン全てに個別の証明書を発行する手間が省けるため、管理がぐっと楽になります。

手順

今回は Dry Run を使用して、証明書の発行ができることを確認するだけにします。

ワイルドカード証明書を発行するには、DNS を使用してドメインを検証する必要があります。

sudo certbot certonly --dry-run --manual --preferred-challenges dns-01

次に、発行先のドメインを聞かれます。
*.example.com のように入力するだけで、自動的にワイルドカード証明書として発行してくれます。便利ですね。

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel):
*.example.com

最後にドメインの検証です。表示される案内に従って、DNS に TXT レコードを設定してください。

Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

ランダムな文字列

Before continuing, verify the record is deployed.
Press Enter to Continue

DNS を設定したら、エンターキーを押すと証明書が発行されます。

注意事項・ハマったところ

サブドメインにしか適用されない

先程は *.example.com に対して証明書を発行しましたが、この証明書は example.com には使用できません。

example.com にも対応する証明書を作成するには、次のようにします。

Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel):
*.example.com example.com

証明書の自動更新がめんどい

ワイルドカード証明書を発行するときに --manual を指定する必要がありましたが、この影響でいつもどおり sudo certbot renew しても怒られてしまいます。シェルスクリプトを作成して、引数に渡す必要があるみたいです。

デフォルトの certbot の設定では自動更新がなされないので、注意が必要です。