名前

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::TLSMojo::IOLoopのためにTLSを交渉します。

イベント

Mojo::IOLoop::TLSMojo::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::TLSMojo::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日更新)

関連情報