class OpenSSL::X509::Request

[edit]

要約

X.509 の証明書署名要求(Certificate Signing Request, CSR)を表わすクラスです。

X.509 CSR については [RFC2986] などを参照してください。

CSR を生成する例。

require 'openssl'
# ファイルから秘密鍵を読み込む
rsa = OpenSSL::PKey::RSA.new(File.read("privkey.pem"))
# 新しい CSR オブジェクトを生成
csr = OpenSSL::X509::Request.new
# DN を生成
name = OpenSSL::X509::Name.new
name.add_entry('C', 'JP')
name.add_entry('ST', 'Osaka')
name.add_entry('CN', 'Example Name')
csr.subject = name
# バージョンを 0 (v1.7) に
csr.version = 0
# 公開鍵を CSR に設定
csr.public_key = rsa.public_key
# attribute を設定
factory = OpenSSL::X509::ExtensionFactory.new
exts = [ factory.create_ext("subjectAltName", "DNS:foo.example.com") ]
asn1exts = OpenSSL::ASN1::Set([OpenSSL::ASN1::Sequence(exts)])
csr.add_attribute(OpenSSL::X509::Attribute.new("extReq", asn1exts))
# 署名
csr.sign(rsa, "sha1")
# PEM 形式で標準出力に出力
puts csr.to_pem

目次

特異メソッド
インスタンスメソッド

特異メソッド

new -> OpenSSL::X509::Request[permalink][rdoc][edit]
new(obj) -> OpenSSL::X509::Request

新しい OpenSSL::X509::Request オブジェクトを生成します。

引数なしの場合は空の OpenSSL::X509::Request オブジェクトを生成します。

引数が文字列の場合は、PEM 形式もしくは DER 形式であるとみなしてオブジェクトを生成します。

引数が IO オブジェクトである場合は、そのファイルの中身からオブジェクトを生成します。

引数が OpenSSL::X509::Request である場合には、その内容をコピーしたオブジェクトを生成します。

引数が to_der メソッドを持つ場合は、そのメソッドによって DER 形式の文字列に変換してからオブジェクトを生成します。

[PARAM] obj:
CSR のデータ
[EXCEPTION] OpenSSL::X509::RequestError:
CSR のフォーマットが不正であるなど、読み込みに失敗した場合に発生します

インスタンスメソッド

add_attribute(attr) -> OpenSSL::X509::Attribute[permalink][rdoc][edit]

新たな attribute を CSR に追加します。

[PARAM] attr:
追加する attribute(OpenSSL::X509::Attribute のインスタンス)
[RETURN]
渡した attribute オブジェクトを返します

[SEE_ALSO] OpenSSL::X509::Request#attribute, OpenSSL::X509::Request#attribute=

attributes -> [OpenSSL::X509::Attribute][permalink][rdoc][edit]

CSR が保持している attribute を OpenSSL::X509::Attribute の配列で返します。

attribute とは X.509 証明書署名要求 に含まれる申請者に関する追加的な情報です。必須ではありません。X.509v3 拡張領域を CSR に含めるときは "reqExt" という oid の attribute を追加します。

[SEE_ALSO] OpenSSL::X509::Request#attribute=, OpenSSL::X509::Request#add_attribute

attributes=(attrs)[permalink][rdoc][edit]

CSR の attribute をクリアして新しい attribute を設定します。

[PARAM] attrs:
新たに設定する attribute(OpenSSL::X509::Attribute のインスタンス)の配列

[SEE_ALSO] OpenSSL::X509::Request#attribute OpenSSL::X509::Request#add_attribute

public_key -> OpenSSL::PKey::PKey[permalink][rdoc][edit]

申請者の公開鍵を返します。

実際には OpenSSL::PKey::PKey 自体のインスタンスでなく、そのサブクラスを返します。

[EXCEPTION] OpenSSL::X509::RequestError:
公開鍵の取得に失敗した場合に発生します
[EXCEPTION] OpenSSL::PKey::PKeyError:
鍵の形式が不正であった場合に発生します
public_key=(pkey)[permalink][rdoc][edit]

申請者の公開鍵を設定します。

[PARAM] pkey:
設定する公開鍵を OpenSSL::PKey::PKey のサブクラスのインスタンスで渡します
[EXCEPTION] OpenSSL::X509::RequestError:
公開鍵の設定に失敗した場合に発生します
sign(key, digest) -> self[permalink][rdoc][edit]

証明書署名要求に秘密鍵で署名をします。

通常、証明書署名要求は申請者の秘密鍵で署名されます。

[PARAM] key:
秘密鍵(OpenSSL::PKey::PKey のサブクラスのオブジェクト)
[PARAM] digest:
ハッシュ関数を表す文字列("sha1" など)
[EXCEPTION] OpenSSL::X509::RequestError:
署名に失敗した場合に発生します

[SEE_ALSO] OpenSSL::X509::Request#verify

signature_algorithm -> String[permalink][rdoc][edit]

証明書署名要求の署名に使われているアルゴリズム名を文字列で返します。

subject -> OpenSSL::X509::Name[permalink][rdoc][edit]

証明書署名要求の申請者名を返します。

[EXCEPTION] OpenSSL::X509::RequestError:
名前の取得に失敗した場合に発生します

[SEE_ALSO] OpenSSL::X509::Request#subject=

subject=(subject)[permalink][rdoc][edit]

証明書署名要求の申請者名を設定します。

[PARAM] subject:
設定する名前を OpenSSL::X509::Name で渡します
[EXCEPTION] OpenSSL::X509::RequestError:
名前の設定に失敗した場合に発生します

[SEE_ALSO] OpenSSL::X509::Request#subject

to_der -> String[permalink][rdoc][edit]

DER 形式の文字列に変換して返します。

[EXCEPTION] OpenSSL::X509::RequestError:
変換に失敗した場合に発生します
to_pem -> String[permalink][rdoc][edit]
to_s -> String

PEM 形式の文字列に変換して返します。

[EXCEPTION] OpenSSL::X509::RequestError:
変換に失敗した場合に発生します
to_text -> String[permalink][rdoc][edit]

人間が読める形式の文字列に変換して返します。

[EXCEPTION] OpenSSL::X509::RequestError:
変換に失敗した場合に発生します
verify(key) -> bool[permalink][rdoc][edit]

署名を検証します。

検証に成功した場合には true を、失敗した場合には false を返します。

[PARAM] key:
検証に利用する公開鍵(OpenSSL::PKey::PKey のサブクラスのインスタンス)
[EXCEPTION] OpenSSL::X509::RequestError:
検証時にエラーが生じた場合に発生します

[SEE_ALSO] OpenSSL::X509::Request#sign

version -> Integer[permalink][rdoc][edit]

バージョンを返します。

PKCS#10 v1.7([RFC2986])では0を返します。

[SEE_ALSO] OpenSSL::X509::Request#version=

version=(version)[permalink][rdoc][edit]

バージョンを設定します。

[PARAM] version:
設定するバージョンの整数

[SEE_ALSO] OpenSSL::X509::Request#version