それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Certbotの証明書をドメインごとではなく、ワイルドカードで1枚証明書にまとめる。

certbot の証明書が増えすぎたので辛い

certbot で証明書をバンバン作ってたら管理がめんどくさくなってきた。

証明書の管理を楽にしたい。

LetsEncryptの証明書は、ワイルドカードに対応しているので、ワイルドカードな証明書を作ることもできるし

また、ワイルドカードだけでなく、複数のドメインを入れることができる。

  1. ワイルドカードを使う
  2. 複数ドメインを1つの証明書で賄う

これらの選択肢があります。

ワイルドカードの証明書の利用

ワイルドカード証明書を使うことで、ある程度の証明書をまとめることが出来た。

これについては、過去記事があります。→ certbot がLetsEncryptのワイルドカード証明書に対応してたので作ってみた - それマグで!

でも、まだ足りない。サブドメインワイルドカードや別ドメイン(別名)などもあると管理が煩雑だった。

複数ドメインを1枚の証明書にまとめる。

certbot の証明書は、「名前」(初期値はドメイン)単位で管理されているが、その証明書に含まれるドメインはいくつも指定が可能です。

説明
メインのドメイン example.com
ワイルドカード *.example.com
サブドメインのイルドカード *.takuya.example.com
ドメインワイルドカード *.example.jp

これらの複数のドメインワイルドカードを1枚に押し込める事が可能でした。

証明書をまとめるメリット

apache / nginx などの設定が非常に楽ちんになる。

証明書の更新作業が非常に楽ちんになる。

なので、ドメインを追加するときは新規で証明書作るより、既存の証明書(名前)にドメインを追加して再取得するほうがいい。

ワイルドカードで複数にサブドメインをまるっと突っ込む例。

mydomain=example.com \
sudo ./certbot-test/bin/certbot  \
  certonly \
  --cert-name $mydomain-all-in-one \
  --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
  --server https://acme-v02.api.letsencrypt.org/directory \
   -d "$mydomain" \
   -d "*.$mydomain" \
   -d "*.a.$mydomain" 

このコマンドのポイントは

--cert-name で「覚えやすい名前」をつけているところ。(よく使われるの)ドメインそのままを名前にせず、自分で名付けています。これによって複数ドメインが入った証明書であることをわかりやすくしている

-d ドメイン で 複数ドメインワイルドカードも含めて)を指定しているところ。

オプションをこれら使うことで、証明書1つでマルチに対応できる

すでに存在する証明書をまとめる

これは、削除→新規作成と更新→追加の2つの選択肢がある。

  1. すでにある証明書を削除(delete/revoke)して、新規作成時にドメイン追加する。(覚えることが少ない
  2. すでにある証明書を更新して、ドメイン追加する。

削除→新規 の例

certbot revoke ...#略
certbot certonly  # 略

削除(revoke)と新規作成は、個別に記事があるので参照する。

追加 を使う

削除→追加以外にも追加オプションがあるので、これも知っておくと役に立ちそう

追加するときは、既存の証明書の名前を指定し、既存のドメインをすべて指定する。

設定例

mydomain=example.com \
sudo ./certbot-test/bin/certbot certonly \
   --cert-name $mydomain-allinone \
   -d git.example.com
  -d add.example.com

f:id:takuya_1st:20190328161857p:plain

TODO ↑の写真とコマンドは間違ってるので後で修正。

すると、次の様に、ドメインに追加するメニューと確認が出てくる。

本家解説

--expand documentation によると次のように解説されている。

--expand tells Certbot to update an existing certificate with a new certificate that contains all of the old domains and one or more additional new domains. With the --expand option, use the -d option to specify all existing domains and one or more new domains.

既存のドメインの証明書を新しい証明書に更新するが、一つ以上の追加(または削除)したいドメインがあるときに -d でドメインを列挙して指定する。

まとめ

証明書にドメイン追加とワイルドカードを使うことで、複数のサブドメインを1枚の証明書にまとめることができ、管理がとても楽ちんになる。

また、サブドメインでもなく、全然別のドメインを入れることができるので、別のドメインをまとめることで管理が簡素化する。 (ただし、同一証明書を利用しているときは、CDNやプロキシでさばくと便利なのですが、複数のドメインを証明書とプロキシでまとめるとその分平分で通信も見られやすいので注意が必要)

参考資料

https://certbot.eff.org/docs/using.html