背景
*.pinkumohikan.com
用のワイルドカード証明書が pinkumohikan.com
ドメインでも使えるのかどうかが気になった。
これまでは pinkumohikan.com
はドメインの階層(深さ)が違うので使えないと考えていたが、あるとき pinkumohikan.com
でも使えるという話を聞いて気になったので調べた。
ワイルドカード証明書とは?
1枚あればサブドメインでSSLを運用できるSSLサーバ証明書。
ワイルドカードSSLサーバ証明書とは、同一のドメイン配下にある複数の異なるサブドメイン(FQDN)を1枚のSSLサーバ証明書でまとめて保護できるタイプのSSLサーバ証明書です。サブドメインごとに証明書を複数取得する負荷や証明書コストを抑えることができます。
*.pinkumohikan.com
用のワイルドカード証明書を用意すれば、下記のようなドメインを1枚の証明書でSSL運用できる。
- www.pinkumohikan.com
- api.pinkumohikan.com
- cdn.pinkumohikan.com
余談: ワイルドカード証明書を使う理由
証明書の管理は地味に面倒だ。秘密鍵と証明書(場合によっては中間証明書も)を消失しないように、かつそれでいて関係のない開発者には見えないように保管しつづける必要がある。また、証明書には有効期限があるので、いつまでに更新するべきかも気にする必要がある。
当然、証明書が増えるとその分管理コストが増える。証明書の有効期限がバラバラだったら?証明書の更新手続きや差し替えなどを頻繁にやるのは面倒だ。
なので、可能な限り利用する証明書は少なくしたい。そういうときにワイルドカード証明書がとても便利なのだ。
調べた結果
*.pinkumohikan.com
用のワイルドカード証明書が pinkumohikan.com
ドメインでも使えるかどうかの技術的な回答は、digicertの資料に答えがあった。
従来のワイルドカード証明書では「support.example.com」のように「*」で指定した階層と同じ階層の FQDN でしか利用できませんでした。 DigiCert のワイルドカード証明書はコモンネームと同じドメインであれば、Subject Alternative Names(サブジェクトの別名)を使用して、コモンネームと異なる階層の FQDN を追加可能なため、「example.com」というドメイン名そのものや、「support.mail.example.com」のような別の階層の FQDN も 1 枚で利用可能です。
技術的に一言でいうと、Common Nameが *.pinkumohikan.com
となっているだけだと pinkumohikan.com
は階層が違うので使えないが、 Subject Alternative Names
というプロパティで pinkumohikan.com
が明記されている場合は利用可能ということだ。
SANs (Subject Alternative Names)
ようは、証明書のプロパティで「このドメインでも使っていい」という情報を持たせられるらしい。
Google Chromeの証明書ビューアでは「サブジェクト代替名」と表現されていた。
Let's Encryptで発行したこのワイルドカード証明書は pinkumohikan.com
ドメインでは使え無さそうだ。
結論
*.pinkumohikan.com
用のワイルドカード証明書が pinkumohikan.com
ドメインでも使えるかどうかは、発行元が証明書発行時にSANsプロパティに pinkumohikan.com
ドメインを明記するかどうか次第である。