<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7515</anchor> - JSON Web Signature (JWS)</cite>, <time>2020-03-29 16:13:43 +09:00</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7515#section-4.1.5">https://tools.ietf.org/html/rfc7515#section-4.1.5</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7516</anchor> - JSON Web Encryption (JWE)</cite>, <time>2022-11-23T08:42:45.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.7">https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.7</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7517</anchor>: JSON Web Key (JWK)</cite>, <time>2022-12-02T08:59:52.000Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.rfc-editor.org/rfc/rfc7517.html#section-4.6">https://www.rfc-editor.org/rfc/rfc7517.html#section-4.6</anchor-external></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>
<dfn><code>x5u</code></dfn>
(X.509 URL)
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWS</anchor>
を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4949</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">デジタル署名</anchor>するのに使った<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>に対応する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5280</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X.509</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開鍵</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書鎖</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml">x5u</code>で指定された証明書鎖</title></anchor>を参照する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>
を表します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー引数</anchor>の
<code>x5u</code>
(X.509 URL)
は、
それに対して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">暗号化</anchor>した 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5280</anchor> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X.509</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開鍵</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書鎖</anchor>に関するものを表します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWE</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解読</anchor>に必要な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">秘密鍵</anchor>の決定に使えます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵引数</anchor>の
<code>x5u</code>
(X.509 URL)
は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5280</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X.509</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開鍵</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書鎖</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml">x5u</code>で指定された証明書鎖</title></anchor>を参照する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>
を表します。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 値は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> で指定するファイルについては、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">x5u</code>で指定された証明書鎖</anchor>の要件が適用されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> で指定されたファイルの取得については、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWSの取得プロトコル</anchor>の要件が適用されます。</p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 
<code>x5u</code>
引数の利用は<MAY xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">任意</MAY>です。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor>
において鍵用法、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">算法</anchor>、その他の省略可能な情報を共に指定しなければならないということはありませんが、
指定することで
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5280</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PKIX</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を扱わない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>との<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>を改善させられるかもしれない
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src>
とされます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 例示により <code xmlns="http://www.w3.org/1999/xhtml">use<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">use (JWK)</title></code> や <code xmlns="http://www.w3.org/1999/xhtml">alg</code> が想定されている
<src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src> ことがわかります。「その他」は <code xmlns="http://www.w3.org/1999/xhtml">alg</code>
依存の各種<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵引数</anchor>を指すと思われます。
「鍵用法」が指すものは不明瞭ですが、
<code xmlns="http://www.w3.org/1999/xhtml">use<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">use (JWK)</title></code>
の他に
<code xmlns="http://www.w3.org/1999/xhtml">key_ops</code>
も含まれると解するのが妥当でしょう。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
そのような情報を指定する場合には、
参照される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">資源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml">x5u</code>で指定された証明書鎖</title></anchor>の最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の相当する欄と意味的に一貫していなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal></src></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
つまり <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> に参照された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ情報</anchor>を入れておけば、
<code xmlns="http://www.w3.org/1999/xhtml">x5u</code> で参照された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>を取得して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PKIX</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書</anchor>として解釈する実装と、
そこまでせずに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ情報</anchor>だけ読んで (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鍵</anchor>自体は使わない) 
処理をする (ことができる) 実装との<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>が向上する、
ということらしいです。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>間の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>が云々と言っているのは謎です。
特定<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>「内」では当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ情報</anchor>を含めなければならない、含めなくても構わない、
いつどの情報を読んでどう処理する、
ということを決めておかなければ、
そもそも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用</anchor>不能です。
そのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">合意</anchor>が取れない異なる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>「間」の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>が求められるのは、
いったいどういう状況なのでしょう。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
多数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>に適用可能な汎用的な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> 実装を提供する場合でしょうか?
でもそういうものを実現したいなら、それこそ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JWK</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> 
がしっかり要件を定めないと無理でしょう...</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
なお、これと同等の規定が <code>x5c</code>, <code>x5t</code> にもあります。</p></section><section><h1>処理</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>JOSE鍵識別</anchor>, <anchor>JWSの取得プロトコル</anchor> </sw-see></p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> でなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">証明書鎖</anchor>自体を指定する 
<code>x5c</code> もあります。</p></section><section><h1>メモ</h1></section></body></html>