SSL サーバーのためのクラス。TCPServer に対応する。
以下はクライアントからの入力を出力するだけの echo サーバーの例。
require 'socket'
require 'openssl'
include OpenSSL
ctx = SSL::SSLContext.new()
ctx.cert = X509::Certificate.new(File.read('cert.pem'))
ctx.key = PKey::RSA.new(File.read('privkey.pem'))
svr = TCPServer.new(2007)
serv = SSL::SSLServer.new(svr, ctx)
loop do
while soc = serv.accept
puts soc.read
end
end
SSLServer.new(svr, ctx)svr には TCPServer オブジェクトを、ctx には OpenSSL::SSL::SSLContext オブジェクトを取る。
to_ioTCPServer オブジェクトを返す。
acceptTLS/SSL クライアントから接続を受け付け、OpenSSL::SSL::SSLSocket オブジェクトを返す。start_immediately が真なら SSLSocket#accept を呼び TLS/SSL ハンドシェイクを実行してから SSLSocket オブジェクトを返す。
addrIPSocket#addr と同様。
close接続を閉じる。
closed?close していたら true を返す。
do_not_reverse_lookup=fcntl(cmd[, arg])IO#fcntl と同様。
getsockopt(level, optname)listenTCPServer#listen と同様。
peeraddrIPSocket#peeraddr と同様。
setsockoptstart_immediatelystart_immediately=(true || false)accept したらすぐに TLS/SSL ハンドシェイクを実行するかどうかを設定する。デフォルトでは true。