6.114. kink/tls/TLS_SERVER

6.114.1. tls_server型

tls_serverは、サーバサイドのTLS接続のファクトリである。

tls_serverは、単一のTLS接続よりも長く生存する種々のデータを保持する。たとえば鍵ペア、証明書、 セッション再開のためのデータなどである。

6.114.1.1. Serv.connect(Tcp ...[$config={}])

connectは、新しいTLS接続を作り、最初のハンドシェイクを行う。

コンフィグメソッド

• C.need_cert

• C.on_success($success): default = VAL.identity

• C.on_error($error): default = {(:Exc) Exc.raise }

接続ができて、最初のハンドシェイクが成功した場合、connectは、作られたtls値を引数として$successを末尾呼び出しする。

接続ができなかった場合、または最初のハンドシェイクが失敗した場合、connectは、exceptionを引数として$errorを末尾呼び出しする。

クライアント認証

C.need_certが呼ばれた場合、TLS接続は証明書ベースのクライアント認証を求める。また、戻された証明書を検証する。

クライアントが証明書を戻さなかった場合、検証は失敗し、connectはエラーとなる。

tls_serverがクライアント認証を求める場合、通常は、tls_serverには空でないtrust_anchorを設定しなければならない。

事前条件

TcpはTLS接続が使うtcp値でなければならない。

TcpのプロトコルファミリはIPv4かIPv6でなければならない。

Tcpは開いていなければならない。

$successは、tls値を取る関数でなければならない。

$errorは、exceptionを取る関数でなければならない。

6.114.2. TLS_SERVER.new(Key_pair_set ...[$config={}])

newは、新しいtls_serverを作る。

コンフィグメソッド

• C.trust_anchor(Ta): default = 空のtrust_anchor

• C.on_success($success): default = VAL.identity

• C.on_error($error): default = {(:Exc) Exc.raise }

Taは、TLSクライアントの証明書を検証するのに使われる。

成功したら、newは、作られたtls_serverを引数として$successを末尾呼び出しする。

エラーの際は、newは、exceptionを引数として$errorを末尾呼び出しする。

事前条件

Key_pair_setは、サーバの鍵ペアを含むkey_pair_setでなければならない。

Taはtrust_anchorでなければならない。

$successは、tls_serverを取る関数でなければならない。

$errorは、exceptionを取る関数でなければならない。

6.114.3. TLS_SERVER.is?(Val)

is?は、Valがtls_serverであるかどうかを戻す。