BLOGサブスレッドの日常
2022.02.08
ワイルドカードドメインの罠
tama
tama です。
最近社内(というか取引先)でハマったトラブルがあったと聞いて検証してみました。
ストーリー
- 対象ドメインにはワイルドカードが指定されていました
- 例:
*.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.- (これが設定されていた経緯はわかりません…)
- 例:
- SSL対応の
ssl.wildcard.tes.toをACMで証明書管理することになりました - DNS検証のため
_hash.ssl.wildcard.tes.to. IN CNAME fuga.acm-validations.aws.を設定しました ssl.wildcard.tes.toにアクセスできなくなってしまいました
設定別検索結果
ワイルドカードだけのとき(1.のとき)
*.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
という設定により、.wildcard.tes.to で終わるすべてのドメイン名が hoge.ap-northeast-1.elb.amazonaws.com に解決されます。
$ nslookup - localhost
> ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
ssl.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
> hoge.wildcard.tes.to.
Server: localhost
Address: ::1#53
hoge.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
サブドメインのサブドメインを設定したとき(3.のとき)
*.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
_hash.ssl.wildcard.tes.to. IN CNAME fuga.acm-validations.aws.
この設定になると、ssl.wildcard.tes.to は特別扱いされることになります。
ssl.wildcard.tes.to にワイルドカードを適用すると _hash.ssl.wildcard.tes.to の設定が機能しなくなってしまうためではないかと考えています。
$ nslookup - localhost
> hoge.wildcard.tes.to.
Server: localhost
Address: ::1#53
hoge.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
> _hash.ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
_hash.ssl.wildcard.tes.to canonical name = fuga.acm-validations.aws.
> ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
*** Can't find ssl.wildcard.tes.to.: No answer
対策
ssl.wildcard.tes.to の設定を明示的に追加してやればいけそうです。
*.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
_hash.ssl.wildcard.tes.to. IN CNAME fuga.acm-validations.aws.
ssl.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
↓
$ nslookup - localhost
> hoge.wildcard.tes.to.
Server: localhost
Address: ::1#53
hoge.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
> _hash.ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
_hash.ssl.wildcard.tes.to canonical name = fuga.acm-validations.aws.
> ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
ssl.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
さらに(そんなケースがあるとしたら)*.ssl.wildcard.tes.to も設定してやれば、ssl のサブドメインも対応できます。
*.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
_hash.ssl.wildcard.tes.to. IN CNAME fuga.acm-validations.aws.
ssl.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
*.ssl.wildcard.tes.to. IN CNAME hoge.ap-northeast-1.elb.amazonaws.com.
↓
$ nslookup - localhost
> hoge.wildcard.tes.to.
Server: localhost
Address: ::1#53
hoge.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
> _hash.ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
_hash.ssl.wildcard.tes.to canonical name = fuga.acm-validations.aws.
> ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
ssl.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
> hage.ssl.wildcard.tes.to.
Server: localhost
Address: ::1#53
hage.ssl.wildcard.tes.to canonical name = hoge.ap-northeast-1.elb.amazonaws.com.
感想
*.wildcard の設定だけであれば ssl.wildcard も名前解決できるのに、
_hash.ssl.wildcard の設定を加えると ssl.wildcard が仲間外れになるの、うっかりするとハマりそうですね。
ssl.wildcard にワイルドカードを適用すると _hash.ssl.wildcard が解決できなくなるから、という考察は理に適ってるのかなと思います。
「ワイルドカードは無くす方向の提案したいお気持ち」
ゴモットモ
参考
この記事を書いた人
tama
