中間 CA 証明書の送信漏れ
A 社は Web サーバのサーバ証明書を更新した。新しい証明書は中間 CA が発行したものだが,設定の誤りによって,TLS のハンドシェイクではサーバ証明書だけが送信されている。あるクライアントは,ルート CA の自己署名証明書を信頼済みとして保持しているが,中間 CA 証明書は保持しておらず,外部から取得する機能もない。このクライアントが接続したときの動作として,適切なものはどれか。
- アルート CA の公開鍵を用いてサーバ証明書の署名を直接検証できるので,検証に成功する。
- イ中間 CA 証明書の失効情報を確認できないだけなので,失効確認を行わない設定のクライアントであれば,検証に成功する。
- ウサーバ証明書の発行者である中間 CA の公開鍵が得られず,信頼済みのルート CA までの証明書パスを構築できないので,検証に失敗する。
- エ検証に失敗するが,サーバがルート CA の自己署名証明書も追加して送信するように設定すれば,クライアントはその証明書をトラストアンカーとして検証に成功する。
正解と解説を見る
正解 ウ
この問題の基礎知識
- 証明書の署名は発行者の秘密鍵で生成されるので,その検証には発行者の公開鍵(発行者の証明書に含まれる)が必要である。
- 証明書パスの検証では,サーバ証明書から中間 CA 証明書を経て,クライアントが信頼済みとして保持するルート CA 証明書(トラストアンカー)まで,発行者と署名を順にたどる。
- トラストアンカーは OS やブラウザなどに事前に独立して配布されたものであり,通信相手から送られてきた自己署名証明書は信頼の起点にならない。
- TLS では,サーバは自身の証明書に続けて,それを証明する中間 CA 証明書を順に送るべきとされている。
アルート CA の公開鍵を用いてサーバ証明書の署名を直接検証できるので,検証に成功する。
サーバ証明書の署名は,発行者である中間 CA の秘密鍵で生成されているので,ルート CA の公開鍵では検証できない。サーバ証明書から信頼済みのルート CA までを順にたどる必要がある。
イ中間 CA 証明書の失効情報を確認できないだけなので,失効確認を行わない設定のクライアントであれば,検証に成功する。
中間 CA 証明書がないと,サーバ証明書の署名を検証する公開鍵が得られず,証明書パスそのものを構築できない。失効確認を行うかどうかにかかわらず,検証は失敗する。
ウサーバ証明書の発行者である中間 CA の公開鍵が得られず,信頼済みのルート CA までの証明書パスを構築できないので,検証に失敗する。正解
証明書パスの検証では,各証明書の主体が次の証明書の発行者であり,先頭の証明書がトラストアンカーから発行されていることを確かめる。TLS では,送信側の証明書に続けて,それを直接証明する証明書を順に送るべきとされている。
エ検証に失敗するが,サーバがルート CA の自己署名証明書も追加して送信するように設定すれば,クライアントはその証明書をトラストアンカーとして検証に成功する。
トラストアンカーは事前に独立して配布されている必要があり,サーバから送られた自己署名証明書は信頼の起点にならない。また,中間 CA 証明書が欠けたままなので,パスは構築できない。
検証用の出典出典照合済み
RFC 5280 Internet X.509 Public Key Infrastructure Certificate and CRL Profile / RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3照合の根拠(3 件)
- ウ(正解)・ア(誤り): パスは各証明書の主体が次の証明書の発行者で,先頭がトラストアンカーから発行されている必要がある。中間 CA が発行したサーバ証明書はルート CA から直接発行されていないので,中間 CA 証明書なしにはパスが構築できない。イ(誤り): 失効確認以前にパスが構築できない
(a) for all x in {1, ..., n-1}, the subject of certificate x is the issuer of certificate x+1; (b) certificate 1 is issued by the trust anchor;
RFC 5280 · Section 6.1 Basic Path Validation(新しいタブで開きます) - エ(誤り): トラストアンカーは信頼できる経路で事前に与えられるものであり,サーバが送った自己署名証明書は信頼の起点にならない
The trust anchor information is trusted because it was delivered to the path processing procedure by some trustworthy out-of-band procedure.
RFC 5280 · Section 6.1.1 Inputs(新しいタブで開きます) - ウ(正解)・エ(誤り): TLS ではサーバ証明書に続けてそれを直接証明する証明書を送るべきであり,トラストアンカーは独立して配布される必要がある
The sender's certificate MUST come in the first CertificateEntry in the list. Each following certificate SHOULD directly certify the one immediately preceding it. Because certificate validation requires that trust anchors be distributed independently, a certificate that specifies a trust anchor MAY be omitted from the chain, provided that supported peers are known to possess any omitted certificates.
RFC 8446 · Section 4.4.2 Certificate(新しいタブで開きます)
サーバ証明書の発行者は中間 CA なので,中間 CA 証明書(とその公開鍵)がなければ,サーバ証明書から信頼済みのルート CA までの証明書パスが構築できず,検証に失敗する。