ACMで自動更新ができない件について調べてみた
はじめに
先日クラスメソッドさんのこちらのブログでAWS ACMで自動更新に失敗するケースがあることを知りました。
自動更新に失敗することがあると聞いた事はありつつも、詳しい条件は知らなかった為なるほどなぁーとつらつらと眺めていると衝撃的な一文を目にしました。
纏めると次の条件に当てはまる証明書は自動更新が実施されません。 ワイルドカード証明書を利用している
まじか!それは面倒くさいよ!と思い調査をしたところ、AWSのドキュメントがアップデートされており少し状況が変わっている事が判明しました。
ACMで自動更新されない条件(2017/7/3版)
サクッと紹介します。
まず、ACMで自動更新を有効にする条件を見ていきましょう。 参照したドキュメントは以下になります。
証明書を自動的に更新するには、以下の条件が満たされている必要があるとあります。
さらに更新の可能性を高める為には次の操作を行うようにとあります。
ここまではクラスメソッドさんのブログにある通りだと思います。
ACMでワイルドカード証明書を自動更新させる条件(2017/7/3版)
次にACMのドメイン検証の仕組みを確認しましょう。 参照したドキュメントは以下になります。
おそらく、ここに関するドキュメントがアップデートされたのだと思います。 自動ドメイン検証の仕組みには以下の記載があります。
ACM は、ワイルドカードドメイン名 (*.example.com など) を親ドメインと同じく処理します。次の表の例を参照してください。
肝心の表を参照してみると・・・・
証明書のドメイン名 | ACM 自動検証に使用するドメイン名 |
---|---|
example.com | example.com / www.example.com |
www.example.com | www.example.com / example.com |
*.example.com | example.com / www.example.com |
なんとワイルドカードドメインにも自動検証に使用するドメインが記載されています!
念のためAWSサポートの方にも確認したところ、ワイルドカードドメイン証明書の場合は表の通りapexまたはwwwドメインに対して検証を行うとの事でした。
(ただしワイルドカードのみの証明書の場合はRFC 6125に違反する為、不正な証明書とみなされるので注意!!)
つまり、ワイルドカード証明書の場合は以下3点の条件を満たしていれば自動更新される事になります。
- 証明書がELBやCloudFrontに設定されている
- インターネットからそのリソースに対してアクセスができる
- www.もしくはapexドメインでそのリソースにアクセスできるようにDNSでルーティングされている
ELBだと固定費がかかるので、なるべく安く自動更新する為にはS3+CloudFrontのような構成で自動検証をクリアするのが良いかもしれませんね。
CloudFrontでACMを利用する場合はus-east-1で証明書を作成する必要がありました。そのため、東京リージョンで取得したACMの証明書は上記の構成で自動検証をクリアすることができませんでした。
us-east-1以外のリージョンで自動更新を通過させるためには、現状はELBに証明書をセットするしか手がなさそうです。