# OpenSSL::SSL::SSLContext

SSL コンテクストクラス

## クラスメソッド:

`SSLContext.new(ssl_method)`
`SSLContext.new()`

  SSLContext オブジェクトを生成する。ssl_method で TLS/SSL method を指定する。ssl_method は文字列かシンボル。指定できるのは以下のいずれか。SSL_CTX_new 参照。

    'TLSv1', 'TLSv1_server', 'TLSv1_client', 'SSLv2', 'SSLv2_server', 'SSLv2_client',
    'SSLv3', 'SSLv3_server', 'SSLv3_client', 'SSLv23', 'SSLv23_server', 'SSLv23_client'

## メソッド:

`ciphers`
`ciphers=`

  使用可能な暗号の配列。以下のような形式。

    [["EDH-RSA-DES-CBC3-SHA", "TLSv1/SSLv3", 168, 168], ...]

`ca_file`
`ca_file=(path)`

  接続相手の検証のために使う、信頼している CA 証明書ファイルのパス。以下のように複数の証明書を含んでいてもかまわない。

    (ここに証明書の説明)

    -----BEGIN CERTIFICATE-----
    ... (CA certificate in base64 encoding) ...
    -----END CERTIFICATE-----

    (ここに証明書の説明)

    -----BEGIN CERTIFICATE-----
    ... (CA certificate in base64 encoding) ...
    -----END CERTIFICATE-----

`ca_path`
`ca_path=(path)`

  接続相手の証明書の検証のために使う、信頼している CA 証明書ファイルを含むディレクトリ。

`cert`
`cert=`

  所有している証明書。 OpenSSL::X509::Certificate オブジェクト。

`cert_store`
`cert_store=`

  接続相手の証明書の検証のために使う、信頼している CA 証明書のストレージ。 OpenSSL::X509::Store オブジェクト。通常は ca_path=(path) や ca_file=(path) を使う。

`client_ca`
`client_ca=`

  クライアント証明書を要求する時にクライアントに送る CA のリスト。CA の Certificate オブジェクトの配列。このリストに含まれる CA ―あるはその下位の CA―に署名された証明書をクライアントは送り返すことになっている。

`extra_chain_cert`
`extra_chain_cert=`

  証明書チェーン。所有している証明書からルート CA までの証明書のリスト。これを指定しない場合、ca_file や ca_path で指定した信頼されている証明書のストレージから証明書チェーンを構成しようとする。 順序は以下のとおり。

    [所有している証明書, 下位 CA 証明書, ... 中間 CA 証明書]

`key`
`key=`

  所有している証明書に記載されている公開鍵に対応する秘密鍵。

`options`
`options=`

  オプション。定数 OP_* のビットマスクで指定する。

`timeout`
`timeout=`

  タイムアウトするまでの時間。単位は秒。

`verify_callback`
`verify_callback=`

  通常の証明書の検証に加えてさらに適用される Proc オブジェクト。この Proc オブジェクトは preverify_ok と ctx 二つの引数をとる。preverify_ok は true か false の値をとり、verify_mode で設定した通常の証明書の検証が成功したかどうかで決まる。ctx は SSLContext オブジェクト。この Proc オブジェクトは true か false を返す必要がある。

    lambda{|preverify_ok, ctx|
      return true # or false
    }

`verify_depth`
`verify_depth=`

  証明書を検証する深さ。

`verify_mode`
`verify_mode=`

  検証モード。デフォルトは nil。つまり検証しない。下の定数の項を参照。定数 VERIFY_* のビットマスクで指定する。

## 定数

verify_mode= と options= で指定できる定数に関しては OpenSSL::SSL を参照。

links: [OpenSSL::SSL] [OpenSSL::X509::Certificate] [OpenSSL::X509::Store] [Proc]
reverse links: [OpenSSL::SSL] [OpenSSL::SSL::SSLServer] [OpenSSL::SSL::SSLSocket] [openssl.rb] [webrick/ssl.rb]