モヒカンは正義

プログラマー風林火山で言う「風のエンジニア」になりたい(比較的)若者Webエンジニアの備忘録

ワイルドカード証明書はサブドメインでなくても利用できるのかどうかを調べた

背景

*.pinkumohikan.com 用のワイルドカード証明書が pinkumohikan.com ドメインでも使えるのかどうかが気になった。

これまでは pinkumohikan.com はドメインの階層(深さ)が違うので使えないと考えていたが、あるとき pinkumohikan.com でも使えるという話を聞いて気になったので調べた。

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

1枚あればサブドメインでSSLを運用できるSSLサーバ証明書。

ワイルドカードSSLサーバ証明書とは、同一のドメイン配下にある複数の異なるサブドメイン(FQDN)を1枚のSSLサーバ証明書でまとめて保護できるタイプのSSLサーバ証明書です。サブドメインごとに証明書を複数取得する負荷や証明書コストを抑えることができます。

www.geotrust.co.jp

*.pinkumohikan.com 用のワイルドカード証明書を用意すれば、下記のようなドメインを1枚の証明書でSSL運用できる。

  • www.pinkumohikan.com
  • api.pinkumohikan.com
  • cdn.pinkumohikan.com

余談: ワイルドカード証明書を使う理由

証明書の管理は地味に面倒だ。秘密鍵と証明書(場合によっては中間証明書も)を消失しないように、かつそれでいて関係のない開発者には見えないように保管しつづける必要がある。また、証明書には有効期限があるので、いつまでに更新するべきかも気にする必要がある。

当然、証明書が増えるとその分管理コストが増える。証明書の有効期限がバラバラだったら?証明書の更新手続きや差し替えなどを頻繁にやるのは面倒だ。

なので、可能な限り利用する証明書は少なくしたい。そういうときにワイルドカード証明書がとても便利なのだ。

調べた結果

*.pinkumohikan.com 用のワイルドカード証明書が pinkumohikan.com ドメインでも使えるかどうかの技術的な回答は、digicertの資料に答えがあった。

dc.cybertrust.co.jp

従来のワイルドカード証明書では「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)

www.geotrust.co.jp

ようは、「このドメインでも使っていいよ」という証明書のプロパティらしい。

f:id:pinkumohikan:20181027214643p:plain

Google Chromeの証明書ビューアでは「サブジェクト代替名」と表現されていた。

f:id:pinkumohikan:20181027214745p:plain

このワイルドカード証明書は pinkumohikan.com ドメインでは使え無さそうだ。

結論

*.pinkumohikan.com 用のワイルドカード証明書が pinkumohikan.com ドメインでも使えるかどうかは、発行元が証明書発行時にSANsプロパティに pinkumohikan.com ドメインを明記するかどうか次第である。