なんだか最近ちょっと騒がしいルート証明書周りの話。
SHA-1からSHA-2への移行が進められているなかで、ルート証明書の署名アルゴリズムは除外されているのですが、オフラインになっているとはいえ本当に良いのか、悪いのかという話かと。
まぁ、その話は置いてといて、認証局のルート証明書には鍵使用法というプロパティがあります。
厳密には拡張キー使用法というExtended Key Usage(EKU)というものなんですが、これは一体なんなのでしょう。
SSL通信で使われるルート証明書の利用目的(キー使用法)とは?
拡張キー使用法とは、電子証明書にはそのカギを使用する用途を指定するものが決められています。
まずはキー使用法(KeyUsage)というものが、標準項目として設定されていて、さらにそれを細かく指定するところで拡張キー使用法があります。
キー使用法(keyUsage)
電子証明書に記載されている公開鍵がどのような用途に使用されるかを指定しています。
拡張キー使用法(extentedKeyUsage)
キー使用法をさらに限定するところです。
シマンテックのルート証明書を見てみます。
「Class 3 Public Primary Certification Authority」
このように、使用用途を決めて、それ以外では動作しないようになっているんですね。
このルート証明書は
- 電子メールの保護
- クライアント認証
- コード署名
- サーバー認証
の4つの用途で使えるルート証明書ということです。
それ以外の用途では使えません。
例をあげるとサーバー認証が含まれていない場合は、このルート証明書はSSL/TLS通信では使えない、ということになります。
よって、このルート証明書を発行元とした証明書を使っているサイトに接続するとブラウザからは警告が出てくることになります。
なお、ルート証明書って基本的には各アプリケーションが管理しているのですね。
よって、IEで見たものがFirefoxでも同じとは限りません。
Windows OSの証明書ストアを使っているのが、
- IE
- Edge
- Chrome
- Opera
- Safari
です。
Firefoxは独自のストアを持っているので、そちらに搭載されているルート証明書を使っています。
ルート証明書は認証局がベンダに配布して組み込んでもらっているので、基本的には同じもの
となりますが、このEKUは証明書側ではなくアプリケーション側でコントロール出来てしまうので、たとえばルート証明書のEKUだけを変更することなんかもできちゃいます。
証明書(Class 3 Public Primary Certification Authority)をパースしてみました。
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
70:ba:e4:1d:10:d9:29:34:b6:38:ca:7b:03:cc:ba:bf
Signature Algorithm: md2WithRSAEncryption
Issuer:
organizationalUnitName = Class 3 Public Primary Certification Authority
organizationName = VeriSign, Inc.
countryName = US
Validity
Not Before: Jan 29 00:00:00 1996 GMT
Not After : Aug 1 23:59:59 2028 GMT
Subject:
organizationalUnitName = Class 3 Public Primary Certification Authority
organizationName = VeriSign, Inc.
countryName = US
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
こんな感じで、EKUは含まれていません。
よって、EKUはOSやアプリケーション側で管理しているってことですね。
今回参考にしたサイトはこちら。グローバルサインさんありがとうございました。
コメント