公開
クロスルート証明書とは何か:DigiCert の G5 移行を読み解くために
DigiCert の G5 ルート階層への移行に合わせて、クロスルート証明書の仕組みと、既存の G1 → G5 チェーンをどう評価すべきかを整理します。

目次
DigiCert が、public TLS 証明書の発行階層を G5 のルート階層へ寄せていく方針を出しています。DigiCert の告知によると、2026 年 10 月 15 日以降、public TLS 証明書の新規発行、更新、再発行は、既定で DigiCert TLS RSA4096 Root G5 と DigiCert TLS ECC P384 Root G5 の階層から発行されます。
このニュースを読むときに混乱しやすいのが、クロスルート証明書です。
いま G1 → G5 のクロスルート証明書を含むチェーンを配っているとして、それはいつまで使えるのか。DigiCert が G5 へ移行すると、既存のチェーンは突然壊れるのか。そもそも、なぜ G1 にクロス署名された G5 と、self-signed の G5 が、同じ G5 として扱えるのか。
この記事では、用語を整理したうえで、クロスルート証明書が何をしている証明書なのかを整理しました。
証明書チェーンの前提知識
証明書チェーンは、サーバー証明書から信頼済みのルート CA (Certificate Authority、認証局) までをつなぐ証明書の列です。
サーバー証明書
↓
中間 CA 証明書
↓
ルート CA 証明書
実際にサーバーが送るのは、通常はサーバー証明書と中間 CA 証明書までです。ルート証明書は、クライアント側の OS やブラウザが持つ trust store に入っている前提になります。RFC 8446 - 4.4.2.Certificate でも、信頼アンカーに相当する証明書は相手がすでに持っている前提で省略できるとされています。
a certificate that specifies a trust anchor MAY be omitted from the chain
もうひとつ押さえておきたいのが、検証が path building と path validation に分かれることです。
path building
どの証明書をどうつなげば信頼アンカーに到達できるかを探す
path validation
見つかったパスの署名、有効期限、拡張、失効状態などを検証する
クロスルート証明書の話で効いてくるのは、主に path building のほうです。
DigiCert のルート証明書の呼び方
この記事では便宜上 G1 などの呼び方を使いますが、証明書の正式名称は以下の通りです。
なお、RSA と ECC は署名に使う公開鍵暗号方式の違いで、DigiCert はどちらについても別々のルート証明書を用意しています。この記事では以降、主に RSA 側 (G5 RSA) を例に説明します。
| この記事での呼び方 | 正式名称 | 位置づけ | 有効期限 |
|---|---|---|---|
| G1 | DigiCert Global Root CA |
旧世代のルート証明書。G1 → G5 クロスルート証明書の Issuer |
2031-11-10 |
| G2 | DigiCert Global Root G2 |
RSA の G2 ルート証明書 | 2038-01-15 |
| G3 | DigiCert Global Root G3 |
ECC の G3 ルート証明書 | 2038-01-15 |
| G5 RSA | DigiCert TLS RSA4096 Root G5 |
新しい TLS 専用 RSA ルート証明書 | 2046-01-14 |
| G5 ECC | DigiCert TLS ECC P384 Root G5 |
新しい TLS 専用 ECC ルート証明書 | 2046-01-14 |
| G1 → G5 | G1 Cross Signed DigiCert TLS RSA 4096 Root G5 |
G5 RSA を G1 で署名したクロスルート証明書 | 2031-11-09 |
G1 → G5 と書くとき、矢印は「G1 が G5 をクロス署名している」という意味で使います。
self-signed のルート証明書と cross-signed のルート証明書の違い
self-signed の G5 ルート証明書は、概念的にはこうです。
Subject: DigiCert TLS RSA4096 Root G5
Issuer : DigiCert TLS RSA4096 Root G5
Public Key: G5 の公開鍵
Signature: G5 の秘密鍵による署名
G1 → G5 ルート証明書はこうです。
Subject: DigiCert TLS RSA4096 Root G5
Issuer : DigiCert Global Root CA
Public Key: G5 の公開鍵
Signature: DigiCert Global Root CA の秘密鍵による署名
クロスルート証明書は Issuer や署名が別のルート証明書となります。ただ、 Self-signed G5 と G1 → G5 で Public Key の情報は同じです。
ここがクロスルート証明書の肝です。G1 によって G5 を署名することで、trust store に G1 はあるが G5 はないようなレガシークライアントであっても、G1 を信頼アンカーとして G5 配下の中間 CA から発行されたサーバー証明書を信頼できるようになります。
クロスルート証明書は別の信頼パスを足すもの
G5 配下の中間 CA 証明書から見ると、以下のどちらの Issuer であっても信頼のチェーンを構築することが可能です。
なぜなら、前述したように G1 → G5 クロスルート証明書と G5 のルート証明書はファイル自体は別物であるものの、公開鍵や、中間 CA 証明書の署名に使われる秘密鍵は同じであるためです。
候補 A: self-signed G5 ルート証明書
Subject = DigiCert TLS RSA4096 Root G5
Issuer = DigiCert TLS RSA4096 Root G5
SPKI = G5 の公開鍵
SKI = G5 公開鍵の識別子
AKI = なし
候補 B: G1 → G5 ルート証明書
Subject = DigiCert TLS RSA4096 Root G5
Issuer = DigiCert Global Root CA
SPKI = G5 の公開鍵
SKI = G5 公開鍵の識別子
AKI = G1 公開鍵の識別子
SKI (Subject Key Identifier) は、その証明書自身が持つ公開鍵を識別するための値です。
一方、AKI (Authority Key Identifier) は、その証明書を発行した上位 CA の公開鍵を識別するための値です。言い換えると、「この証明書は、どの CA のどの鍵によって発行されたものか」を示すためのヒントです。
これらの値は、証明書チェーンを構築する際に、下位証明書の issuer 候補を探すために利用されます。典型的には、下位証明書の Issuer が上位候補の Subject と一致し、下位証明書の AKI が上位候補の SKI と一致する証明書が issuer 候補になります。 ただし、AKI/SKI はチェーン構築を助ける識別子であり、最終的な検証では、上位候補の公開鍵を使って下位証明書の署名を検証できることが重要です。
候補 A を使えば、G5 のルート証明書を信頼アンカーとする短いパスになります。
サーバー証明書
↓
G5 中間 CA 証明書
↓
G5 ルート証明書
候補 B を使えば、G1 のルート証明書を信頼アンカーとするパスになります。
サーバー証明書
↓
G5 中間 CA 証明書
↓
G1 → G5 クロスルート証明書
↓
G1 ルート証明書
どちらの場合でも、G5 中間 CA 証明書が指す公開鍵は同じになります。
G5 中間 CA 証明書
Subject = DigiCert G5 TLS RSA4096 SHA384 2021 CA1
Issuer = DigiCert TLS RSA4096 Root G5
SPKI = G5 中間 CA 証明書の公開鍵
SKI = G5 中間 CA 証明書の公開鍵の識別子
AKI = G5 公開鍵の識別子
クロスルート証明書は「G5 の代わりに G1 を使う」ものではありません。G5 の同じ公開鍵を、G1 という別の信頼アンカーへ橋渡しするための証明書です。新しいルート証明書がまだ trust store に入っていない古い環境のために、互換性の橋を架けている、と考えると分かりやすいと思います。
G1 → G5 を送り続ければ DigiCert のルート証明書再編に伴う影響はないのか?
G1 → G5 クロスルート証明書の有効期限は 2031 年 11 月 9 日です。まだ数年残っています。
つまり、2026 年 10 月 15 日以降、DigiCert が証明書の発行や更新を G5 RSA と G5 ECC の階層から行うようになったとしても、サーバーが G1 → G5 クロスルート証明書を含むチェーンを応答すれば、引き続き trust store に G1 が含まれ G5 が含まれないようなクライアントであっても、そのサーバーが提示したサーバー証明書を信頼できるということです。
ただ、チェーンが実際に信頼されるかどうかは、有効期限だけでは決まりません。少なくとも次が関係します。
1. クロスルート証明書の有効期限が切れていないこと
2. クロスルート証明書が失効していないこと
3. クライアントが Issuer 側のルート証明書を信頼アンカーとして持っていること
4. クライアントがそのパスを構築できること
5. ブラウザや OS の root program (trust store に入れるルート証明書を決める運用ポリシー) がそのパスを拒否していないこと
6. アプリケーションがルート証明書 / 中間 CA 証明書のピン留め (pinning) をしていないこと
上記の通りクライアント側の実装による部分もあるため、実際にチェーンを構築して証明書を信頼できるか、検証をするのが確実です。
手元で確認する
DigiCert に G1 → G5 クロスルート証明書を応答するデモサイトがありますので、こちらを使います。
以下の出力を確認すると、インデックス 3 の証明書が G1 → G5 クロスルート証明書です。 i (Issuer) が G1 の証明書を指していることから判断できます。インデックス 4 の証明書として G1 の証明書が表示されています。
openssl s_client \
-connect digicert-rsa4096-root-g5-to-g1.chain-demos.digicert.com:443 \
-servername digicert-rsa4096-root-g5-to-g1.chain-demos.digicert.com
Certificate chain
0 s:jurisdictionC = US, jurisdictionST = Utah, businessCategory = Private Organization, serialNumber = 5299537-0142, C = US, ST = Utah, L = Lehi, O = "DigiCert, Inc.", CN = digicert-rsa4096-root-g5-to-g1.chain-demos.digicert.com
i:C = US, O = "DigiCert, Inc.", CN = DigiCert G5 TLS RSA4096 SHA384 2021 CA1
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
v:NotBefore: Jul 23 00:00:00 2026 GMT; NotAfter: Aug 21 23:59:59 2026 GMT
1 s:C = US, O = "DigiCert, Inc.", CN = DigiCert G5 TLS RSA4096 SHA384 2021 CA1
i:C = US, O = "DigiCert, Inc.", CN = DigiCert TLS RSA4096 Root G5
a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA384
v:NotBefore: Apr 14 00:00:00 2021 GMT; NotAfter: Apr 13 23:59:59 2031 GMT
2 s:C = US, O = "DigiCert, Inc.", CN = DigiCert TLS RSA4096 Root G5
i:C = US, O = "DigiCert, Inc.", CN = DigiCert TLS RSA4096 Root G5
a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA384
v:NotBefore: Jan 15 00:00:00 2021 GMT; NotAfter: Jan 14 23:59:59 2046 GMT
3 s:C = US, O = "DigiCert, Inc.", CN = DigiCert TLS RSA4096 Root G5
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA384
v:NotBefore: Sep 21 00:00:00 2022 GMT; NotAfter: Nov 9 23:59:59 2031 GMT
4 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA1
v:NotBefore: Nov 10 00:00:00 2006 GMT; NotAfter: Nov 10 00:00:00 2031 GMT
self-signed G5 と G1 → G5 クロスルート証明書が別物かどうかは、以下のコマンドで確認できます。
# self-signed の G5 ルート証明書をダウンロード
curl -fsSLo g5-self-signed.pem \
https://cacerts.digicert.com/DigiCertTLSRSA4096RootG5.crt.pem
# G1 → G5 クロスルート証明書をダウンロード
curl -fsSLo g5-cross-signed.pem \
https://cacerts.digicert.com/G1CrossSignedDigiCertTLSRSA4096RootG5.crt.pem
# self-signed の G5 ルート証明書の詳細を表示
openssl x509 -in g5-self-signed.pem -noout \
-subject -issuer -dates -serial -fingerprint -sha256
subject=C=US, O=DigiCert, Inc., CN=DigiCert TLS RSA4096 Root G5
issuer=C=US, O=DigiCert, Inc., CN=DigiCert TLS RSA4096 Root G5
notBefore=Jan 15 00:00:00 2021 GMT
notAfter=Jan 14 23:59:59 2046 GMT
serial=08F9B478A8FA7EDA6A333789DE7CCF8A
sha256 Fingerprint=37:1A:00:DC:05:33:B3:72:1A:7E:EB:40:E8:41:9E:70:79:9D:2B:0A:0F:2C:1D:80:69:31:65:F7:CE:C4:AD:75
openssl x509 -in g5-self-signed.pem -noout -text \
| grep -A2 -E "Subject Key Identifier|Authority Key Identifier"
X509v3 Subject Key Identifier:
51:33:1C:ED:36:40:AF:17:D3:25:CD:69:68:F2:AF:4E:23:3E:B3:41
X509v3 Key Usage: critical
# G1 → G5 クロスルート証明書の詳細を表示
openssl x509 -in g5-cross-signed.pem -noout \
-subject -issuer -dates -serial -fingerprint -sha256
subject=C=US, O=DigiCert, Inc., CN=DigiCert TLS RSA4096 Root G5
issuer=C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root CA
notBefore=Sep 21 00:00:00 2022 GMT
notAfter=Nov 9 23:59:59 2031 GMT
serial=05BD039060388AF417FE7D1C05BE4507
sha256 Fingerprint=A4:BC:DA:32:D4:9C:DF:05:F0:CD:D0:85:E7:3C:3A:2E:67:88:0B:D4:85:79:FE:D4:DF:59:40:DF:76:A0:76:D7
openssl x509 -in g5-cross-signed.pem -noout -text \
| grep -A2 -E "Subject Key Identifier|Authority Key Identifier"
X509v3 Subject Key Identifier:
51:33:1C:ED:36:40:AF:17:D3:25:CD:69:68:F2:AF:4E:23:3E:B3:41
X509v3 Authority Key Identifier:
03:DE:50:35:56:D1:4C:BB:66:F0:A3:E2:1B:1B:C3:97:B2:3D:D1:55
X509v3 Key Usage: critical
Issuer、有効期限、シリアル番号などが異なっており、証明書としては別物ですが、 SKI は一致していることが分かります。
次に、公開鍵を比較します。
# self-signed の G5 ルート証明書の公開鍵のハッシュ値を表示
openssl x509 -in g5-self-signed.pem -pubkey -noout \
| openssl pkey -pubin -outform DER \
| openssl dgst -sha256
SHA2-256(stdin)= 6a97b51c8219e93e5dec64bad5806cdeb0f8355be47e757010b702456e01aafd
# G1 → G5 クロスルート証明書の公開鍵のハッシュ値を表示
openssl x509 -in g5-cross-signed.pem -pubkey -noout \
| openssl pkey -pubin -outform DER \
| openssl dgst -sha256
SHA2-256(stdin)= 6a97b51c8219e93e5dec64bad5806cdeb0f8355be47e757010b702456e01aafd
G5 および G1 → G5 クロスルート証明書に含まれる公開鍵は一致しており、同じ鍵であることが確認できます。
まとめ
クロスルート証明書は「古いルート証明書で新しいルート証明書を署名したもの」とざっくり覚えてしまいがちですが、実際の構造を正しく知ることで今回の DigiCert のルート証明書再編といった話題も正確に読み解けるようになります。 私自身もクロスルート証明書の理解が曖昧でしたが、今回整理できたなと思います。