Skip to content

MS_CertificateProblems

nishi_74322014 edited this page Aug 4, 2026 · 1 revision

証明書で発生する問題

概要

X.509 証明書関係の「あるある」の纏め。

Windows の証明書ストア(リポジトリ)と API が密結合しているため、
予期せぬ問題が起きることがある。ココではそれらをまとめた。

プロダクト固有のストア

プロダクトによっては、

プロダクト固有の証明書ストア(リポジトリ)を使用しているケース(証明書を参照)

があるが、その場合、動作が異なることになる。

補足: 代表例が Java(cacerts キーストア)Firefox(NSS の独自ストア)、および OpenSSL(SSL_CERT_FILE / SSL_CERT_DIR である。 「IE / Edge では見えるのに Java アプリだけ失敗する」といった 切り分けの効かない障害は、たいていこれが原因である。

制御できること

証明書信頼リスト (CTL)

  • Microsoft Update などでルート証明書の配信ができる。
  • Windows 7(Windows Server 2008 R2)からは、
    オンラインでルート証明書の配信ができる。

詳細は証明書信頼リスト (CTL)を参照。

証明書失効リスト (CRL)

オンラインで証明書を直ちに失効させることができる。

詳細は証明書失効リスト (CRL)を参照。

その他

証明書の利用目的

証明書の「利用目的(EKU)」だけを disable(信頼停止)にできる。

補足: certmgr.msc で証明書のプロパティを開き、 「この証明書の目的を無効にする」を選ぶと、 証明書自体は削除せずに特定の用途(サーバー認証・コード署名など)のみ拒否できる。 これは証明書ストアのプロパティ(EnhancedKeyUsage の上書き)として保持される。

ルート証明書までの証明書チェーンが無い

CTL、CRLでチェーンが切れる

  • CTL によるルート証明書の削除
  • CRL によるルート証明書の失効

によって、証明書チェーンが切れる。

オレオレ証明書関連

ルート証明書までの証明書チェーンが無い場合、

自己(署名)証明書(所謂オレオレ証明書)では、証明書を使用できないことがある(証明書を参照)。
(例えば、X509Certificate2 に証明書をロードできないことがある)

ルート証明書を「信頼されたルート証明機関」にインストールするなどして対応可能。

補足: 検証時のチェーン構築は 中間 CA 証明書がサーバ側から送られてこないことでも失敗する。 Windows は AIA(Authority Information Access)拡張を辿って 中間証明書を自動取得するが、閉域環境ではこれが働かず、 「ブラウザによって成功したり失敗したりする」という症状になる。 サーバ側で中間証明書を含めて提示する(フル チェーン配信)のが正しい対処である。

証明書信頼リスト (CTL) 関連

ルート証明書情報の更新

突然、通信ができなくなるなどの問題が発生し得るため、
ルート証明書の更新の影響は大きい。

過去に発生した代表的な事例:

時期 内容
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 へのアクセスによって、処理遅延が発生することがある。

処理遅延

CRL 配布点(CDP)や OCSP レスポンダへの到達性がない環境では、
検証がタイムアウトするまで待たされ、サイトの表示や
アプリケーションの起動が数十秒遅れることがある。

補足: 特にインターネットに出られないサーバでこの症状が出やすい。 対策は以下のいずれか。

  • プロキシ経由で CDP / OCSP に到達できるようにする。
  • グループ ポリシーで失効確認の動作を調整する。
  • OCSP ステープリングを有効にする(サーバ側が失効情報を代理提示する)。

なお、.NET の X509Chain では RevocationMode / UrlRetrievalTimeout で挙動を制御できる。

その他

特定の証明書の特定の利用を拒否

これらは、CTL、CRL 以外の方式で制御されている。

SHA1+SSLの組み合わせを拒否(2017/01/01)

Windows は 2017 年 1 月 1 日で SHA-1 で署名した TLS 証明書での SSL 通信を拒否した。

補足(最新化): 現在は SHA-1 は TLS のみならず、 コード署名やタイムスタンプでも廃止が進んでいる (Windows は 2020 年に SHA-1 署名の Windows Update 配信を終了)。 新規の証明書は SHA-256 以上が前提である。 詳細は暗号化アルゴリズムを参照。

参考


Tags: セキュリティ, 暗号化, 証明書

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally