-
Notifications
You must be signed in to change notification settings - Fork 0
MS_CertificateProblems
-
TOP > インフラストラクチャ > 証明書
- 証明書で発生する問題
- PKI(公開鍵暗号基盤)
- 証明書失効リスト (CRL)
- 証明書信頼リスト (CTL)
X.509 証明書関係の「あるある」の纏め。
Windows の証明書ストア(リポジトリ)と API が密結合しているため、
予期せぬ問題が起きることがある。ココではそれらをまとめた。
プロダクトによっては、
プロダクト固有の証明書ストア(リポジトリ)を使用しているケース(証明書を参照)
があるが、その場合、動作が異なることになる。
補足: 代表例が Java(
cacertsキーストア) と Firefox(NSS の独自ストア)、および OpenSSL(SSL_CERT_FILE/SSL_CERT_DIR) である。 「IE / Edge では見えるのに Java アプリだけ失敗する」といった 切り分けの効かない障害は、たいていこれが原因である。
- Microsoft Update などでルート証明書の配信ができる。
- Windows 7(Windows Server 2008 R2)からは、
オンラインでルート証明書の配信ができる。
詳細は証明書信頼リスト (CTL)を参照。
オンラインで証明書を直ちに失効させることができる。
詳細は証明書失効リスト (CRL)を参照。
証明書の「利用目的(EKU)」だけを disable(信頼停止)にできる。
補足:
certmgr.mscで証明書のプロパティを開き、 「この証明書の目的を無効にする」を選ぶと、 証明書自体は削除せずに特定の用途(サーバー認証・コード署名など)のみ拒否できる。 これは証明書ストアのプロパティ(EnhancedKeyUsageの上書き)として保持される。
- CTL によるルート証明書の削除
- CRL によるルート証明書の失効
によって、証明書チェーンが切れる。
ルート証明書までの証明書チェーンが無い場合、
自己(署名)証明書(所謂オレオレ証明書)では、証明書を使用できないことがある(証明書を参照)。
(例えば、X509Certificate2に証明書をロードできないことがある)
ルート証明書を「信頼されたルート証明機関」にインストールするなどして対応可能。
補足: 検証時のチェーン構築は 中間 CA 証明書がサーバ側から送られてこないことでも失敗する。 Windows は AIA(Authority Information Access)拡張を辿って 中間証明書を自動取得するが、閉域環境ではこれが働かず、 「ブラウザによって成功したり失敗したりする」という症状になる。 サーバ側で中間証明書を含めて提示する(フル チェーン配信)のが正しい対処である。
突然、通信ができなくなるなどの問題が発生し得るため、
ルート証明書の更新の影響は大きい。
過去に発生した代表的な事例:
| 時期 | 内容 |
|---|---|
| 2015/03 | 不正に発行された証明書を失効させる更新プログラムが公開された |
| 2015/11 | Dell のプリインストール ルート証明書(eDellRoot)問題への対応として CTL が更新された |
| 2016/04 | Symantec の G1 ルート証明書が信頼対象から外された |
補足(最新化): その後も、 2017〜2018 年の Symantec 系証明書の一斉失効(DigiCert への移管)、 2021 年の Let's Encrypt の DST Root CA X3 有効期限切れなど、 同種の事象は繰り返し発生している。 古い OS・古いデバイスほど CTL が更新されず影響を受けるため、 長期運用の組み込み機器では特に注意が必要である。
- オンラインで直ちに証明書を失効させられる可能性がある。
- CRL へのアクセスによって、処理遅延が発生することがある。
CRL 配布点(CDP)や OCSP レスポンダへの到達性がない環境では、
検証がタイムアウトするまで待たされ、サイトの表示や
アプリケーションの起動が数十秒遅れることがある。
補足: 特にインターネットに出られないサーバでこの症状が出やすい。 対策は以下のいずれか。
- プロキシ経由で CDP / OCSP に到達できるようにする。
- グループ ポリシーで失効確認の動作を調整する。
- OCSP ステープリングを有効にする(サーバ側が失効情報を代理提示する)。
なお、.NET の
X509ChainではRevocationMode/UrlRetrievalTimeoutで挙動を制御できる。
これらは、CTL、CRL 以外の方式で制御されている。
Windows は 2017 年 1 月 1 日で SHA-1 で署名した TLS 証明書での SSL 通信を拒否した。
補足(最新化): 現在は SHA-1 は TLS のみならず、 コード署名やタイムスタンプでも廃止が進んでいる (Windows は 2020 年に SHA-1 署名の Windows Update 配信を終了)。 新規の証明書は SHA-256 以上が前提である。 詳細は暗号化アルゴリズムを参照。
Tags: セキュリティ, 暗号化, 証明書
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。