requires=
classes=
methods=
sublibraries=
is_sublibrary=true
category=

DRb のプロトコルとして SSL/TLS 上で通信する drbssl が使えるようになります。

 require 'drb/ssl'
 obj = ''
 DRb::DRbServer.new( 'drbssl://localhost:10000', 
                     obj, 
                     {:SSLCertName => [["CN","fqdn.example.com"]]})

[[m:DRb::DRbServer.new]] や [[m:DRb.#start_service]] が 
"drbssl" スキームを受け入れるようになります。
また、[[m:DRb::DRbObject.new_with_uri]] でも drbunix スキームが使えるようになります。

サーバを起動するときは以下のオプションが追加で利用できます。
詳しくは、対応するメソッドや
[[c:OpenSSL::SSL::SSLContext]] クラス自体のドキュメント、
その他 [[lib:openssl]] の各種ドキュメントを参照してください。

: :SSLCertificate
  サーバが自分自身を証明するための証明書を指定します。
  [[m:OpenSSL::SSL::SSLContext#cert=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLPrivateKey
  :SSLCertificate で指定した証明書に添付されている公開鍵
  に対応する秘密鍵を指定します。
  [[m:OpenSSL::SSL::SSLContext#key=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLClientCA
  クライアント証明書を要求するときにヒント情報として送る
  CA のリストを指定します。
  [[m:OpenSSL::SSL::SSLContext#client_ca=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLCACertificatePath
  接続相手の証明書の検証のために用いる信頼済みCA証明書
  ファイルのディレクトリパスを指定します。
  [[m:OpenSSL::SSL::SSLContext#ca_path=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLCACertificateFile
  接続相手の証明書の検証のために用いる信頼済みCA証明書
  ファイルのパスを指定します。
  [[m:OpenSSL::SSL::SSLContext#ca_file=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLTmpDhCallback
  一時的 DH 鍵を生成するためのコールバックを指定します。
  [[m:OpenSSL::SSL::SSLContext#tmp_dh_callback=]] で利用します。
  デフォルトは nil (指定なし)です。
: :SSLVerifyMode
  証明書の検証法を指定します。
  [[m:OpenSSL::SSL::SSLContext#verify_mode=]] で利用します。
  デフォルトは [[m:OpenSSL::SSL::VERIFY_NONE]] (検証しない)です。
: :SSLVerifyDepth
  証明書チェインの検証の最大深さを指定します。
  [[m:OpenSSL::SSL::SSLContext#verify_depth=]] で利用します。
  デフォルトは nil (OpenSSL のデフォルトの深さを利用)です。
: :SSLVerifyCallback
  検証をフィルタするコールバックを指定します。
  [[m:OpenSSL::SSL::SSLContext#verify_callback=]] で利用します。
  デフォルトは nil です。
: :SSLCertificateStore
  接続相手の証明書の検証のために使う、信頼している CA 証明書を
  保持する証明書ストアを指定します。
  [[m:OpenSSL::SSL::SSLContext#cert_store=]] で利用します。
  デフォルトは nil です。
: :SSLCertName
  :SSLCertificate を省略した場合に生成される証明書の
  保有者として利用される名前を指定します。
  生成される証明書は自己署名されているので、証明書の発行者としても
  この名前が利用されます。
  [[m:OpenSSL::X509::Name.new]] に渡されるので、
  [["CN","fqdn.example.com"]]という形式の配列を渡す必要があります。
  デフォルトは nil です。
: :SSLCertComment
  :SSLCertificate を省略した場合に生成される証明書の
  コメント文字列を指定します。
  デフォルトは "Generated by Ruby/OpenSSL" です。

オプションで :SSLCertificate と :SSLPrivateKey のペアを指定しなかった場合は
[[lib:openssl]] を用いて鍵対と自己署名証明書を生成し、それが利用されます。

安全性が必要なく、暗号通信できれば十分であるような
場合には :SSLCertificate と :SSLPrivateKey を省略し、:SSLVerifyMode は
OpenSSL::SSL::VERIFY_NONE を指定しておけば十分でしょう。

高水準の安全性が必要な場合は drb 以外の選択肢を検討してください。
