Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > opensslライブラリ > OpenSSL::X509::ExtensionFactoryクラス

class OpenSSL::X509::ExtensionFactory

クラスの継承リスト: OpenSSL::X509::ExtensionFactory < Object < Kernel

要約

OpenSSL::X509::Extension を簡便に生成するための クラスです。

# ca_cert: CA の証明書オブジェクト
# req: CSR オブジェクト
# newcert: 新たに生成する証明書のオブジェクト
ca_cert = OpenSSL::X509::Certificate.new(File.read('ca_cert.pem'))
req = OpenSSL::X509::Request.new(File.read('req.pem'))
newcert = OpenSSL::X509::Certificate.new
# 新しい ExtensionFactory オブジェクトを生成し、 CA の証明書オブジェクト
# を設定
factory = OpenSSL::X509::ExtensionFactory.new(ca_cert)
# CSR オブジェクトを設定
factory.subject_request = req
# basicConstraints 拡張領域を生成
p factory.create_extension("basicConstraints", "CA:FALSE")
# => basicConstraints = CA:FALSE

# subjectKeyIdentifier 拡張領域を生成
# この値は CSR オブジェクトの公開鍵から生成される
p factory.create_extension("subjectKeyIdentifier", "hash")
# => subjectKeyIdentifier = 99:E7:A1:.....

# authorityKeyIdentifier 拡張領域を生成
# この値は CA の証明書オブジェクトから生成される
p factory.create_extension("authorityKeyIdentifier", "keyid,issuer:always")
# => authorityKeyIdentifier = keyid:D1:AB:87:....

# 生成した拡張領域オブジェクトを証明書の拡張領域に追加
newcert.add_extension(factory.create_extension("basicConstraints", "CA:FALSE"))

特異メソッド

new(issuer_cert=nil, subject_cert=nil, subject_req=nil, crl=nil) -> OpenSSL::X509::ExtensionFactory

ExtensionFactory オブジェクトを生成します。

証明書の発行者や所有者の OpenSSL::X509::Certificate オブジェクトや OpenSSL::X509::RequestOpenSSL::X509::CRL オブジェクトを 渡すことによって、拡張領域の中身を ExtensionFactory オブジェクトが 計算することができます。 例えば、"subjectKeyIdentifier" 拡張領域は証明書の一部のハッシュ値 を値として持ちますが、 OpenSSL::X509::Certificate オブジェクトをあらかじめ渡しておくことによって OpenSSL::X509::ExtensionFactory#create_extension がその値を計算します。 これらの情報が必要ない場合は nil を渡します。

以下のメソッドによってオブジェクト生成後に証明書オブジェクト等を 設定することができます。

[PARAM] issuer_cert:
証明書発行者、すなわち CA の OpenSSL::X509::Certificate オブジェクト
[PARAM] subject_cert:
証明書所有者の OpenSSL::X509::Certificate オブジェクト
[PARAM] subject_req:
関連する証明書署名要求(OpenSSL::X509::Request) オブジェクト
[PARAM] crl:
関連する 証明書失効リスト(OpenSSL::X509::CRL)オブジェクト

インスタンスメソッド

config -> OpenSSL::Config

自身に設定されているコンフィグファイルオブジェクトを設定します。

config=(config)

自身にコンフィグファイルオブジェクトを設定します。

factory.config = OpenSSL::Config.load(OpenSSL::Config::DEFAULT_CONFIG_FILE)
[PARAM] config:
設定ファイル(OpenSSL::Config オブジェクト)
create_ext(oid, value, critical = false) -> OpenSSL::X509::Extension

OpenSSL::X509::Extension のインスタンスを生成して返します。

[PARAM] oid:
拡張領域の識別子を表す文字列
[PARAM] value:
拡張領域の値を表す文字列
[PARAM] critical:
重要度(真偽値)
create_ext_from_array(ary) -> OpenSSL::X509::Extension

[oid, value, critical] もしくは [oid, value] という配列から OpenSSL::X509::Extension オブジェクトを生成します。

[PARAM] ary:
生成する拡張領域のデータの配列

[SEE_ALSO] OpenSSL::X509::ExtensionFactory#create_ext

create_ext_from_hash(hash) -> OpenSSL::X509::Extension

ハッシュから OpenSSL::X509::Extension オブジェクトを生成します。

渡すハッシュテーブルは

{"oid" => OID文字列, "value" => value文字列 "critical" => 真偽値 }

という内容が必要です。"critical" を省略した場合は false が 渡されるのと同じになります。

[PARAM] hash:
生成する拡張領域のデータのハッシュテーブル

[SEE_ALSO] OpenSSL::X509::ExtensionFactory#create_ext

create_ext_from_string(str) -> OpenSSL::X509::Extension

文字列から OpenSSL::X509::Extension オブジェクトを生成します。

文字列は "oid = value" もしくは "oid = critical, value" という 形式である必要があります。

[PARAM] str:
生成する拡張領域のデータの文字列

[SEE_ALSO] OpenSSL::X509::ExtensionFactory#create_ext

create_extension(obj) -> OpenSSL::X509::Extension
create_extension(oid, value, critical=false) -> OpenSSL::X509::Extension

OpenSSL::X509::Extension のインスタンスを生成して返します。

引数の個数が1個である場合、それが配列、ハッシュ、文字列のいずれかである ならば、 OpenSSL::X509::ExtensionFactory#create_ext_from_arrayOpenSSL::X509::ExtensionFactory#create_ext_from_hashOpenSSL::X509::ExtensionFactory#create_ext_from_string、 がそれぞれ呼びだされてオブジェクトを生成します。

引数が2個以上である場合は、 OpenSSL::X509::ExtensionFactory#create_ext が呼びだされて オブジェクトを生成します。

[PARAM] obj:
拡張領域のデータ。配列、ハッシュ、文字列のいずれか
[PARAM] oid:
拡張領域の識別子を表す文字列
[PARAM] value:
拡張領域の値を表す文字列
[PARAM] critical:
重要度(真偽値)
crl -> OpenSSL::X509::CRL | nil

自身に設定された証明書失効リストオブジェクトを返します。

設定されていない場合は nil を返します。

crl=(crl)

自身に証明書失効リストオブジェクトを設定します。

[PARAM] crl:
設定する証明書失効リスト(OpenSSL::X509::CRL)オブジェクト

[SEE_ALSO] OpenSSL::X509::ExtensionFactory.new

issuer_certificate -> OpenSSL::X509::Certificate | nil

自身に設定されている発行者(issuer)の証明書オブジェクトを返します。

証明書が設定されていない場合は nil を返します。

issuer_certificate=(cert)

自身に発行者(issuer)の証明書オブジェクトを設定します。

[PARAM] cert:
設定する証明書(OpenSSL::X509::Certificate)オブジェクト

[SEE_ALSO] OpenSSL::X509::ExtensionFactory.new

subject_certificate -> OpenSSL::X509::Certificate | nil

自身に設定されている所有者(subject)の証明書オブジェクトを返します。

証明書が設定されていない場合は nil を返します。

subject_certificate=(name)

自身に所有者(subject)の証明書オブジェクトを設定します。

[PARAM] cert:
設定する証明書(OpenSSL::X509::Certificate)オブジェクト

[SEE_ALSO] OpenSSL::X509::ExtensionFactory.new

subject_request -> OpenSSL::X509::Request | nil

自身に設定されている証明書署名要求オブジェクトを返します。

設定されていない場合は nil を返します。

subject_request=(req)

自身に証明書署名要求オブジェクトを設定します。

[PARAM] req:
設定する証明書署名要求(OpenSSL::X509::Request)オブジェクト

[SEE_ALSO] OpenSSL::X509::ExtensionFactory.new

class OpenSSL::X509::ExtensionFactory