Certificate ⚠
2027-01-01 以降、Certificate は検証できなくなります。それまでに Profile Annotation を発行するよう変更してください。
用語
本文書に説明のない用語については、用語を参照してください。
- Profile Annotation (PA)
- 認証制度
Certificate のデータモデル
Profile Annotation に従います。
プロパティ
Certificate のプロパティ一覧
| Name | Type | Description |
|---|---|---|
@context | string[] | REQUIRED. OP VC Data Model に従ってください (MUST)。さらに、3つ目の値を "https://originator-profile.org/ns/cip/v1" にしなければなりません (MUST)。 |
type | string[] | REQUIRED. 必ず ["VerifiableCredential", "Certificate"] にしてください (MUST)。 |
issuer | string | REQUIRED. Certificate 発行者の OP ID でなければなりません (MUST)。 |
credentialSubject | object | REQUIRED. 次の credentialSubject のプロパティを含む JSON-LD Node Object です。 |
validFrom | string | OPTIONAL. 認証の有効期間の開始日時です。VC Data Model 2.0 4.9節 Validity Period に準拠します。dateTimeStamp データ型 でなければなりません (MUST)。この値を指定しないとき、有効期間の開始日時はなし(validUntil より過去のどの時点でも有効とする)を示します。 |
validUntil | string | OPTIONAL. 認証の有効期限です。VC Data Model 2.0 4.9節 Validity Period に準拠します。dateTimeStamp データ型 でなければなりません (MUST)。このプロパティの値は、 Certificate が含む情報が正しい最後の時刻を表します。この値を指定しないとき、有効期限なし(無期限)を示します。 |
validFrom、validUntil は Certificate が含む情報の有効期間の開始日時、および有効期限であり、 VC の署名の有効期間の開始日時、有効期限とは異なります。現在 OP で採用している Securing Mechanism である VC-JOSE-COSE の JWT では、署名の有効期間の開始日時、有効期限は JWT の iat (issued at)、exp (expired at) クレームで指定します。 validFrom、validUntil プロパティの値は iat、exp クレームとは異なる値にすることができます。
異なる値を指定したいシナリオとして、有効期限が遠い将来の第三者認証を証明する VC を、定期的に再発行したいケースがあります。例えば、 2050-12-31T15:00:00Z に失効する第三者認証をこの仕様に基づいて Certificate として発行する場合です。そのとき、署名の危殆化や鍵の漏洩によるセキュリティリスクを軽減するために、Certificate を定期的に再発行することが考えられます。定期的な再発行を促すため、署名に有効期限を設け、1年ごとに署名が失効するようにします。その場合、署名の有効期限(1年後)を exp クレームに指定し、 validUntil は再発行した日付によらず 2050-12-31T15:00:00Z にすることで、再発行を行いながら、第三者認証の有効期限を正確に表現することができます。
プロパティの定義については VC Data Model 2.0 4.9節 Validity Period を参照ください。
credentialSubject のプロパティ一覧
| Name | Type | Description |
|---|---|---|
id | string | REQUIRED. Certificate を保有する組織の OP ID です。 |
type | string | REQUIRED. 個別の Certificate を定義している文書で指定します。 |
description | string | OPTIONAL. この証明書に関する説明です。 |
image | object | OPTIONAL. image データ型 の JSON-LD Node Object でなければなりません (MUST)。このプロパティで Certificate の画像が改ざんされていないかを検証することができます。 |
certifier | string | OPTIONAL. 認証機関の名前です。 |
verifier | string | OPTIONAL. 検証機関の名前です。 |
certificationSystem | object | REQUIRED. 次の certificationSystem のプロパティを含む JSON-LD Node Object です。 |
certificationSystem のプロパティ一覧
| Name | Type | Description |
|---|---|---|
id | string | REQUIRED. 認証制度の ID を URI 形式で指定してください。 |
type | string | REQUIRED. CertificationSystem でなければなりません (MUST)。 |
name | string | REQUIRED. 認証制度の名前です。 |
description | string | OPTIONAL. 認証制度の説明です。 |
ref | string | RECOMMENDED. 認証制度の詳細を知るための人が読むためのページの URL です。 |
Certificate が証明する内容、証明の根拠あるいは証拠が同種で、Certificate を保有する組織だけが異なるものは、同じ certificationSystem.id の値であるべきです。
また、認証制度の名前、説明、URL は発行時点で最新の内容であるべきです。
Appendix
例
このセクションは非規範的です。
Certificate のデータモデルの具体例を次に示します。
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://originator-profile.org/ns/credentials/v1",
"https://originator-profile.org/ns/cip/v1",
{ "@language": "ja" }
],
"type": ["VerifiableCredential", "Certificate"],
"issuer": "dns:cert-issuer.example.org",
"credentialSubject": {
"id": "dns:cert-holder.example.jp",
"type": "CertificateProperties",
"description": "この事業者は、〇〇の審査を経て〇〇の認証を取得しました。",
"image": {
"id": "https://example.com/certification-mark.svg",
"digestSRI": "sha256-OYP9B9EPFBi1vs0dUqOhSbHmtP+ZSTsUv2/OjSzWK0w="
},
"certifier": "〇〇認証機構",
"verifier": "〇〇協会",
"certificationSystem": {
"id": "urn:uuid:14270f8f-9f1c-4f89-9fa4-8c93767a8404",
"type": "CertificationSystem",
"name": "<認証制度名>",
"description": "<認証制度の説明>",
"ref": "https://certification.example.org/about"
}
},
"validFrom": "2024-03-31T15:00:00Z",
"validUntil": "2030-03-31T14:59:59Z"
}