[6] 
[DFN[証明書指紋]] ([DFN[certificate thumbprint]]、
[DFN[certificate fingerprint]]) [SRC[>>5]]
は、
[[証明書]]の[[ハッシュ値]] ([[要約]])
です。


* 仕様書

[REFS[
- [8] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-2.1.1>
- [1] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]] ([TIME[2015-05-05 21:00:37 +09:00]] 版) <https://tools.ietf.org/html/rfc7469#section-2.4>
- [5] [CITE@en[RFC 7515 - JSON Web Signature (JWS)]], [TIME[2020-03-29 16:13:43 +09:00]] <https://tools.ietf.org/html/rfc7515#section-4.1.7>
- [10] [CITE@en[RFC 7515 - JSON Web Signature (JWS)]]
([TIME[2018-12-30 17:16:56 +09:00]])
<https://tools.ietf.org/html/rfc7515#section-4.1.8>
- [7] [CITE@en[RFC 7515 - JSON Web Signature (JWS)]], [TIME[2020-03-29 16:13:43 +09:00]] <https://tools.ietf.org/html/rfc7515#section-10.11>
- [15] 
[CITE@en[[[RFC 7516]] - JSON Web Encryption (JWE)]], [TIME[2022-11-23T08:56:42.000Z]] <https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.9>
- [18] 
[CITE@en[[[RFC 7517]]: JSON Web Key (JWK)]], [TIME[2022-12-02T11:19:32.000Z]] <https://www.rfc-editor.org/rfc/rfc7517.html#section-4.8>


]REFS]

* 意味

[2] [[SPKI Fingerprint]] は、
[[X.509証明書]]の [[SPKI]] の [[DER]] 符号化したものを入力として既知の[[暗号学的ハッシュアルゴリズム]]に与えた時、
その出力のことをいいます [SRC[>>1]]。

* Base64 符号化 SPKI Fingerprint

[9] 
[DFN[Base64符号化SPKI Fingerprint]]
は、
[[RFC 4648]] [[Base64]] [[符号化]]された [[SPKI Fingerprint]] です [SRC[>>8]]。

[3] [CODE(HTTP)@en[pin-[VAR[*]]]] [[指令]]で使います。

* [CODE[x5t]]

[11] 
[[JWS]]
の[[ヘッダー引数]]
[DFN[[CODE[x5t]]]]
([RUBYB[X.509 certificate SHA-1 thumbprint][X.509 証明書 SHA-1 指紋]])
は、
[[JWS]]
[[RFC 4949]] [[デジタル署名]]に使った[[鍵]]に対応する
[[RFC 5280]] [[X.509]] [[証明書]]の [[DER]] 符号化の
[[SHA-1]] [RUBYB[[[指紋]]][thumbprint]] ([RUBYB[[[要約]]][digest]])
を
[[RFC 7515]] [[base64url]] [[符号化]]したものを表します。
[SRC[>>5]]

[20] 
[[JWK]]
の[[鍵引数]]
[CODE[x5t]]
([RUBYB[X.509 certificate SHA-1 thumbprint][X.509 証明書 SHA-1 指紋]])
は、
[[RFC 5280]] [[X.509]] [[証明書]]の [[DER]] 符号化の
[[SHA-1]] [RUBYB[[[指紋]]][thumbprint]] ([RUBYB[[[要約]]][digest]])
を
[[RFC 7515]] [[base64url]] [[符号化]]したものを表します。
[SRC[>>19]]


[12] 
[[JWS]]
の[[ヘッダー引数]]
[DFN[[CODE[x5t#S256]]]]
([RUBYB[X.509 certificate SHA-256 thumbprint][X.509 証明書 SHA-256 指紋]])
は、
[[JWS]]
[[RFC 4949]] [[デジタル署名]]に使った[[鍵]]に対応する
[[RFC 5280]] [[X.509]] [[証明書]]の [[DER]] 符号化の
[[SHA-256]] [RUBYB[指紋][thumbprint]] ([RUBYB[[[要約]]][digest]])
を
[[RFC 7515]] [[base64url]] [[符号化]]したものを表します。
[SRC[>>10]]

[22] 
[[JWK]]
の[[鍵引数]]
[CODE[x5t#S256]]
([RUBYB[X.509 certificate SHA-256 thumbprint][X.509 証明書 SHA-256 指紋]])
は、
[[RFC 5280]] [[X.509]] [[証明書]]の [[DER]] 符号化の
[[SHA-256]] [RUBYB[[[指紋]]][thumbprint]] ([RUBYB[[[要約]]][digest]])
を
[[RFC 7515]] [[base64url]] [[符号化]]したものを表します。
[SRC[>>19]]


[16] 
[[JWE]]
の[[ヘッダー引数]]
[CODE[x5t]],
[CODE[x5t#S256]]
は、
それに対して [[JWE]] が[[暗号化]]された[[公開鍵]]を含む[[証明書]]を示す[[指紋]]を表します。
[[JWE]] を[[解読]]するための[[秘密鍵]]の決定に使えます。
[SRC[>>15]]

[19] 
[[JWK]]
では、
[[証明書]]の[[鍵]]は [[JWK]] の他の[[鍵引数]]が表現する[[公開鍵]]と一致しなければ[MUST[なりません]]。
[SRC[>>18]]



[13] 
[CODE[x5t]],
[CODE[x5t#S256]]
の使用は[MAY[任意]]です。
[SRC[>>5, >>10, >>18]]
指定してもしなくても構いません。

[21] 
[[JWK]] では鍵用法、[[算法]]、その他の情報の[[鍵引数]]は指定しても[MAY[構いません]]が、
その場合[[証明書]]と意味的に一貫していなければ[MUST[なりません]]。
この辺の事情は [CODE[x5u]] の場合と同じです。
[SRC[>>18]]




[14] [CODE[x5t]] で [[SHA-1]] が使われるのは、互換性のためとされます。
[CODE[x5t#S256]] は [[SHA-256]] を使いますが、
[[JWS]] 開発当時の既存の開発プラットフォームでこれに対応したものはありませんでした。
[SRC[>>7]]

[17] [[JOSE鍵識別]]参照。

* メモ

[FIG(quote)[
[FIGCAPTION[
[4] [CITE@en[RFC 7469 - Public Key Pinning Extension for HTTP]]
([TIME[2015-05-05 21:00:37 +09:00]] 版)
<https://tools.ietf.org/html/rfc7469#appendix-A>
]FIGCAPTION]

>    openssl x509 -noout -in certificate.pem -pubkey | \
>        openssl asn1parse -noout -inform pem -out public.key
>    openssl dgst -sha256 -binary public.key | openssl enc -base64
>             Figure 11: Example SPKI Fingerprint Generation Code

]FIG]
