2.19. Replace Section 5.3.22 - Polling Request and Response (ポーリングリクエストとレスポンス)
2.19. Replace Section 5.3.22 - Polling Request and Response (ポーリングリクエストとレスポンス)
[RFC4210] のセクション 5.3.22 は, ir, cr, kur メッセージに対してポーリングメッセージがいつどのように使用されるかを説明しています。この文書は, 任意の種類のリクエストメッセージに対する未処理の応答のポーリングメカニズムを拡張します。この更新は, 'pReq' vs. 'pollReq' および 'pRep' vs. 'pollRep' という用語の不整合な使用も修正します。
[RFC4210] のセクション 5.3.22 を次のテキストに置き換えます:
このメッセージペアは, クライアントが未処理の応答のステータスを判断するためにサーバーをポーリングする必要があるシナリオ (つまり, "waiting" PKIStatus が受信された場合) を処理することを目的としています。
PollReqContent ::= SEQUENCE OF SEQUENCE {
certReqId INTEGER }
PollRepContent ::= SEQUENCE OF SEQUENCE {
certReqId INTEGER,
checkAfter INTEGER, -- time in seconds
reason PKIFreeText OPTIONAL }
ir, cr, p10cr, または kur リクエストメッセージへの応答として, ポーリングはステータス "waiting" を含む ip, cp, または kup 応答メッセージで開始されます。任意の種類のリクエストメッセージに対して, ステータス "waiting" のエラー応答メッセージでポーリングを開始できます。以下の条項は, ポーリングメッセージの使用方法を説明します。トランザクション中に複数の certConf メッセージを送信できることを前提としています。発行された証明書の CertStatus を含む各 ip, cp, または kup への応答として 1 つが送信されます。
-
ip, cp, または kup メッセージへの応答として, EE はすべての発行された証明書に対して certConf を送信し, 各 certConf に対して PKIconf を期待します。EE は, ip, cp, または kup メッセージのステータス "waiting" の各 CertResponse 要素への応答として, およびステータス "waiting" のエラーメッセージへの応答として pollReq メッセージを送信します。その certReqId は, ステータス "waiting" の CertResponse データ構造のインデックス, または完全な応答を参照する -1 でなければなりません。
-
pollReq への応答として, まだ保留中の要求された証書の 1 つ以上が準備できている場合, または他の種類の要求への最終応答が利用可能な場合, CA/RA は ip, cp, または kup を返します; それ以外の場合, pollRep を返します。
-
EE が pollRep を受信した場合, 別の pollReq を送信する前に, checkAfter フィールドで指定された秒数以上待機します。
-
EE が ip, cp, または kup を受信した場合, 初期応答と同じ方法で処理されます; 他の応答を受信した場合, これは元のリクエストへの最終応答として処理されます。
以下のクライアント側ステートマシンは, 個々の CertResponse 要素のポーリングを説明します。
START
|
v
Send ir
| ip
v
Check status
of returned <------------------------+
certs |
| |
+------------------------>|<------------------+ |
| | | |
| (issued) v (waiting) | |
Add to <----------- Check CertResponse ------> Add to |
conf list for each certificate pending list |
/ |
/ |
(conf list) / (empty conf list) |
/ ip |
/ +-----------------+
(empty pending list) / | pollRep
END <---- Send certConf Send pollReq---------->Wait
| ^ ^ |
| | | |
+-----------------+ +---------------+
(pending list)
以下の交換では, エンドエンティティが 1 つのリクエストで 2 つの証明書に登録しています。
ステップ エンドエンティティ PKI
--------------------------------------------------------------------
1 ir をフォーマット
2 -> ir ->
3 ir を処理
4 両方の証書に手動介入が
必要
5 <- ip <-
6 ip を処理
7 pollReq をフォーマット
8 -> pollReq ->
9 証書リクエストのステータスを確認
10 証書は準備できていない
11 pollRep をフォーマット
12 <- pollRep <-
13 待機
14 pollReq をフォーマット
15 -> pollReq ->
16 証書リクエストのステータスを確認
17 1 つの証書が準備完了
18 ip をフォーマット
19 <- ip <-
20 ip を処理
21 certConf をフォーマット
22 -> certConf ->
23 certConf を処理
24 ack をフォーマット
25 <- pkiConf <-
26 pollReq をフォーマット
27 -> pollReq ->
28 証書のステータスを確認
29 証書が準備完了
30 ip をフォーマット
31 <- ip <-
31 ip を処理
32 certConf をフォーマット
33 -> certConf ->
34 certConf を処理
35 ack をフォーマット
36 <- pkiConf <-
以下のクライアント側ステートマシンは, 完全な応答メッセージのポーリングを説明します。
Start
|
| Send request
|
+----------- Receive response ------------+
| |
| ip/cp/kup/error with | other
| status "waiting" | response
| |
v |
+------> Polling |
| | |
| | Send pollReq |
| | Receive response |
| | |
| pollRep | other response |
+-----------+------------------->+<-------------------+
|
v
End