Mojo::IOLoop::TLS - ノンブロッキングTLSハンドシェイク
使い方
use Mojo::IOLoop::TLS; # TLSを交渉する my $tls = Mojo::IOLoop::TLS->new($old_handle); $tls->on(upgrade => sub { my ($tls, $new_handle) = @_; ... }); $tls->on(error => sub { my ($tls, $err) = @_; ... }); $tls->negotiate(server => 1, tls_version => 'TLSv1_2'); # 必要ならばリアクターを始動させる $tls->reactor->start unless $tls->reactor->is_running;
説明
Mojo::IOLoop::TLSはMojo::IOLoopのためにTLSを交渉します。
イベント
Mojo::IOLoop::TLSはMojo::EventEmitterのすべてのイベントを継承しており、次の新しいイベントを発行します。
upgrade
$tls->on(upgrade => sub { my ($tls, $handle) = @_; ... });
TLSがネゴシエートされたら発行されます。
error
$tls->on(error => sub { my ($tls, $err) = @_; ... });
交渉中にエラーが発生した場合に発生し、未処理の場合は致命的です。
ATTRIBUTES
Mojo::IOLoop::TLSは以下の属性を実装しています。
reactor
my $reactor = $tls->reactor; $tls = $tls->reactor(Mojo::Reactor::Poll->new);
Low-level event reactor, defaults to the reactor
attribute value of the global Mojo::IOLoop singleton. Note that this attribute is weakened.
低レベルのイベントリアクタ。デフォルトは、グローバルなMojo::IOLoopシングルトンのreactor属性値です。 この属性は弱参照です。
メソッド
Mojo::IOLoop::TLSはMojo::EventEmitterのすべてのメソッドを継承しており、次の新しいメソッドを継承しています。
can_tls
my $bool = Mojo::IOLoop::TLS->can_tls;
IO::Socket::SSLの2.009以上がインストールされており、TLSサポートが有効であれば、真です。
negotiate
$tls->negotiate(server => 1, tls_version => 'TLSv1_2'); $tls->negotiate({server => 1, tls_version => 'TLSv1_2'});
TLSを交渉します。
以下のオプションは現在利用可能です:
- server
-
server => 1
TLSをサーバー側からネゴシエートします。デフォルトはクライアント側です。
- tls_ca
-
tls_ca => '/etc/tls/ca.crt'
TLS認証局ファイルへのパス。
- tls_cert
-
tls_cert => '/etc/tls/server.crt' tls_cert => {'mojolicious.org' => '/etc/tls/mojo.crt'}
TLS証明書ファイルへのパス。デフォルトでは、サーバ側の組み込みのテスト証明書が使用されます。
- tls_ciphers
-
tls_ciphers => 'AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH'
TLS cipher specification string. For more information about the format see https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-STRINGS.
TLS暗号仕様文字列。フォーマットの詳細は、 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-STRINGS。
- tls_key
-
tls_key => '/etc/tls/server.key' tls_key => {'mojolicious.org' => '/etc/tls/mojo.key'}
TLSキーファイルへのパス。デフォルトはサーバー側の組み込みテストキーです。
- tls_protocols
-
tls_protocols => ['foo', 'bar']
交渉するALPNプロトコル。
- tls_verify
-
tls_verify => 0x00
TLS検証モード
- tls_version
-
tls_version => 'TLSv1_2'
TLSプロトコルのバージョン。
new
my $tls = Mojo::IOLoop::TLS->new($handle);
新しいMojo::IOLoop::Streamオブジェクトを構築します。
SEE ALSO
Mojolicious, Mojolicious::Guides, https://mojolicious.org.
(Mojolicious 8.12対応。2019年5月22日更新)