2.7 調査結果の考察
2.7.1 Microsoft 社製品
DWORD dwRevocationFreshnessTime;
} CERT̲CHAIN̲CONTEXT, *PCERT̲CHAIN̲CONTEXT;
図 2-6 証明書検証の結果を保持する構造体(CERT_CHAIN_CONTEXT)の構成
(a)
検証対象の証明書または証明書チェーンに関するエラーエラーコードの定義値 意味
CERT_TRUST_NO_ERROR 証明書およびチェーンに問題はない。
CERT_TRUST_IS_NOT_TIME_VALID
検証対象の証明書か証明書チェーンの 証明書で有効期限が妥当ではないもの がある。
CERT_TRUST_IS_NOT_TIME_NESTED 証明書チェーンの証明書で有効期限の
関連が適切ではない CERT_TRUST_IS_REVOKED
トラストポイントの証明書か証明書チ ェーンの証明書で失効しているものが ある。
CERT_TRUST_IS_NOT_SIGNATURE_VALID
検証対象の証明書か証明書チェーンの 証明書で有効な署名でないものがあ る。
CERT_TRUST_IS_NOT_VALID_FOR_USAGE
検証対象の証明書か証明書チェーンの 証明書で指定された鍵使用法と合致し ないものがある。
CERT_TRUST_IS_UNTRUSTED_ROOT 証明書チェーンが信頼されないルート
認証局に基づいている。
CERT_CHAIN_CONTEXT 証明書チェーン・コンテキスト
CERT_TRUST_STATUS 検証結果 検証エラーのコード
検証結果の情報のコード
PCERT_SIMPLE_CHAIN 証明書のパスを保持
PCERT_CHAIN_ELEMENT パスの要素を保持
検証結果
証明書コンテキスト
CERT_TRUST_REVOCATION_STATUS_UNKN OWN
検証対象の証明書か証明書チェーンの 証明書で、失効状態が不明なものがあ る。
CERT_TRUST_IS_CYCLIC 証明書チェーンが循環している。
CERT_TRUST_INVALID_EXTENSION 無効な拡張がある。
CERT_TRUST_INVALID_POLICY_CONSTRAIN TS
検証対象の証明書か証明書チェーンの 証明書で、ポリシー制約拡張を持つも のがあり、プリシマッピングが禁止さ れているか、ポリシーが要求されてい るのにない証明書がある。
CERT_TRUST_INVALID_BASIC_CONSTRAINT S
検証対象の証明書か証明書チェーンの 証明書で、基本制約拡張を持つものが あり、CA制約かパス長制約に反する 証明書がある。
CERT_TRUST_INVALID_NAME_CONSTRAINT S
検証対象の証明書か証明書チェーンの 証明書で、無効な名前制約拡張がある
CERT_TRUST_HAS_NOT_SUPPORTED_NAME _CONSTRAINT
検証対象の証明書か証明書チェーンの 証明書で、サポートしていないフィー ルドを持つ名前制約拡張を持つものが ある。minimumフィールドと
maximumフィールドはサポートして
いない。したがって、minimum値は 常に0として、maximum値はあって はいけない。otherNameとしては MicrosoftUPN(1.3.6.1.4.1.311.20.2.3) がサポートされている。x400Address、
ediPartyName、registeredIDはサポ ートされていない。
CERT_TRUST_HAS_NOT_DEFINED_NAME_C ONSTRAINT
検証対象の証明書か証明書チェーンの 証明書で、名前制約拡張があるが、証 明書の名前に使われているフィールド に関する制約がない。
CERT_TRUST_HAS_NOT_PERMITTED_NAME _CONSTRAINT
検証対象の証明書か証明書チェーンの 証明書で、名前制約拡張を持つものが ありpermittedSubtreesフィールドが あるが、許可されていない名前を持つ 証明書がある。
CERT_TRUST_HAS_EXCLUDED_NAME_CONS TRAINT
検証対象の証明書か証明書チェーンの 証明書で、名前制約拡張を持つものが あり、excludedSubtreesフィールドが あるが、受け付けられない名前を持つ 証明書がある。
CERT_TRUST_IS_OFFLINE_REVOCATION
検証対象の証明書か証明書チェーンの 証明書に関する失効情報は、オフライ ンでものであるか古い。
CERT_TRUST_NO_ISSUANCE_CHAIN_POLIC Y
ポリシー制約拡張でポリシーが要求さ れているが、要求されたポリシーを満 たさないものがある。
CERT_TRUST_IS_PARTIAL_CHAIN 証明書チェーンが完結していない。
CERT_TRUST_CTL_IS_NOT_TIME_VALID この証明書チェーンを構築するために
使ったCTLが古い。
CERT_TRUST_CTL_IS_NOT_SIGNATURE_VAL ID
この証明書チェーンを構築するために 使ったCTLに有効な署名がない。
CERT_TRUST_CTL_IS_NOT_VALID_FOR_USA GE
この証明書チェーンを構築するために 使ったCTLの使用法は適切ではない。
CERT_TRUST_HAS_VALID_NAME_CONSTRAI
NTS 有効な名前制約を持つ。
(b)
参照情報TrustStatus.dwInfoStatus
エラーコードの定義値 意味
CERT_TRUST_HAS_EXACT_MATCH_ISSUER 適切な発行元の証明書が存在す
る。
CERT_TRUST_HAS_KEY_MATCH_ISSUER 適切な鍵を持つ発行元の証明書
が存在する。
CERT_TRUST_HAS_NAME_MATCH_ISSUER 適切な名前を持つ発行元の証明
書が存在する。
CERT_TRUST_IS_SELF_SIGNED 自己署名の証明書である。
CERT_TRUST_IS_COMPLEX_CHAIN 証明書チェーンは複数ある。
CERT_TRUST_HAS_PREFERRED_ISSUER 適切な発行元を持つ。
CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY ポリシーを持つ。
CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 有効な名前制約を持つ。
(c)
検証各テストで取得したTrustStatus
を以下に示す。表
2-11
各テストで取得したTrustStatus
のコードテス ト番 号
期待 値と の合 致
TrustStatus.dwErrorStatus TrustStatus.dwInfoStatus
9 ○ 0
(CERT_TRUST_REVOCATION_STA TUS_UNKNOWN)
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
16 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
(CERT_TRUST_REVOCATION_STA TUS_UNKNOWN)
0
30 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
(CERT_TRUST_REVOCATION_STA TUS_UNKNOWN)
0
37 ○
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
(CERT_TRUST_REVOCATION_STA TUS_UNKNOWN)
0
49 ○ 0
(CERT_TRUST_REVOCATION_STA TUS_UNKNOWN)
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
101 ○ 0
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
112 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA 0
IN
123 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
134 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
135 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
136 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
137 ○ 0
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
138 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
145 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
149 ○ 0
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
150 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
171 × CERT_TRUST_IS_PARTIAL_CHAI
N 0
CERT_TRUST_IS_COMPLEX_CHA IN
185 ○ 0
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
196 ×
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
209 ○ 0
304 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
ERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
305 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
306 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
307 ○
CERT_TRUST_IS_REVOKED CERT_TRUST_HAS_NAME_MATC H_ISSUER
CERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
308 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI 0
N
CERT_TRUST_IS_COMPLEX_CHA IN
309 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
310 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
ERT_TRUST_INVALID_EXTENSION CERT_TRUST_HAS_PREFERRED_ISS UER
311 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0
312 失効 検出 不可
CERT_TRUST_REVOCATION_STA TUS_UNKNOWN
CERT_TRUST_IS_OFFLINE_REVO CATION
CERT_TRUST_IS_PARTIAL_CHAI N
CERT_TRUST_IS_COMPLEX_CHA IN
0