Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > drb/sslライブラリ

library drb/ssl

要約

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

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

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

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

:SSLCertificate

サーバが自分自身を証明するための証明書を指定します。 OpenSSL::SSL::SSLContext#cert= で利用します。 デフォルトは nil (指定なし)です。

:SSLPrivateKey

:SSLCertificate で指定した証明書に添付されている公開鍵 に対応する秘密鍵を指定します。 OpenSSL::SSL::SSLContext#key= で利用します。 デフォルトは nil (指定なし)です。

:SSLClientCA

クライアント証明書を要求するときにヒント情報として送る CA のリストを指定します。 OpenSSL::SSL::SSLContext#client_ca= で利用します。 デフォルトは nil (指定なし)です。

:SSLCACertificatePath

接続相手の証明書の検証のために用いる信頼済みCA証明書 ファイルのディレクトリパスを指定します。 OpenSSL::SSL::SSLContext#ca_path= で利用します。 デフォルトは nil (指定なし)です。

:SSLCACertificateFile

接続相手の証明書の検証のために用いる信頼済みCA証明書 ファイルのパスを指定します。 OpenSSL::SSL::SSLContext#ca_file= で利用します。 デフォルトは nil (指定なし)です。

:SSLTmpDhCallback

一時的 DH 鍵を生成するためのコールバックを指定します。 OpenSSL::SSL::SSLContext#tmp_dh_callback= で利用します。 デフォルトは nil (指定なし)です。

:SSLVerifyMode

証明書の検証法を指定します。 OpenSSL::SSL::SSLContext#verify_mode= で利用します。 デフォルトは OpenSSL::SSL::VERIFY_NONE (検証しない)です。

:SSLVerifyDepth

証明書チェインの検証の最大深さを指定します。 OpenSSL::SSL::SSLContext#verify_depth= で利用します。 デフォルトは nil (OpenSSL のデフォルトの深さを利用)です。

:SSLVerifyCallback

検証をフィルタするコールバックを指定します。 OpenSSL::SSL::SSLContext#verify_callback= で利用します。 デフォルトは nil です。

:SSLCertificateStore

接続相手の証明書の検証のために使う、信頼している CA 証明書を 保持する証明書ストアを指定します。 OpenSSL::SSL::SSLContext#cert_store= で利用します。 デフォルトは nil です。

:SSLCertName

:SSLCertificate を省略した場合に生成される証明書の 保有者として利用される名前を指定します。 生成される証明書は自己署名されているので、証明書の発行者としても この名前が利用されます。 OpenSSL::X509::Name.new に渡されるので、 [["CN","fqdn.example.com"]]という形式の配列を渡す必要があります。 デフォルトは nil です。

:SSLCertComment

:SSLCertificate を省略した場合に生成される証明書の コメント文字列を指定します。 デフォルトは "Generated by Ruby/OpenSSL" です。

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

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

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