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

library openssl

要約

OpenSSL(https://www.openssl.org/) を Ruby から扱うためのライブラリです。

このドキュメントでは SSL/TLS の一般的事項については 解説をしません。利用者は、SSL/TLSの各概念、例えば 以下の事項について理解している必要があります。

SSLのようなセキュリティ技術は、その利用者に無条件に安全性を 提供することはできません。利用者、とくにSSLでソフトウェアを実装する プログラマは、 SSL/TLS の技術、それが基づいている概念を理解し、 ライブラリを適切に利用する必要があります。

この文章の内容は無保証です。この文章は内容を検証して書かれて いますが、間違っている可能性もあります。このライブラリを セキュリティ的に重大な用途に用いるのであれば、 自分自身でこのドキュメントの内容を検証してください。

OpenSSL は SSL/TLS による通信を提供する高水準なインターフェースと より基本的な機能を提供する低水準なインターフェースがあります。 基本的には高水準なインターフェースのみを利用すべきです。

低水準なインターフェースを利用する場合には、利用したい機能に 関する十分な知識と注意深さが必要となります。

自己署名証明書の作成の例です。自分の秘密鍵で自分の公開鍵に署名しているから自己署名です。

require 'openssl'

key = OpenSSL::PKey::RSA.new(1024)
digest = OpenSSL::Digest::SHA1.new()

issu = sub = OpenSSL::X509::Name.new()
sub.add_entry('C', 'JP')
sub.add_entry('ST', 'Shimane')
sub.add_entry('CN', 'Ruby Taro')

cer = OpenSSL::X509::Certificate.new()
cer.not_before = Time.at(0)
cer.not_after = Time.at(0)
cer.public_key = key  # <= 署名する対象となる公開鍵
cer.serial = 1
cer.issuer = issu
cer.subject = sub

cer.sign(key, digest) # <= 署名するのに使う秘密鍵とハッシュ関数
print cer.to_text

参考文献

クラス

OpenSSL::ASN1::ASN1Data

ASN.1 データ型を表すクラス。

  OpenSSL::ASN1::Constructive

ASN.1 の構造型を表すクラスです。

   OpenSSL::ASN1::Sequence

ASN.1 の Sequence 型(Universal タグのタグ番号16)を表すクラスです。

   OpenSSL::ASN1::Set

ASN.1 の Set 型(Universal タグのタグ番号17)を表すクラスです。

  OpenSSL::ASN1::Primitive

ASN.1 の単純型を表すクラスです。

   OpenSSL::ASN1::BMPString

ASN.1 の BMPString 型(Universal タグのタグ番号30)を表すクラスです。

   OpenSSL::ASN1::BitString

ASN.1 の Bit String 型(Universal タグのタグ番号3)を表すクラスです。

   OpenSSL::ASN1::Boolean

ASN.1 の Boolean 型(Universal タグのタグ番号1)を表すクラスです。

   OpenSSL::ASN1::Enumerated

ASN.1 の Enumerated 型(Universal タグのタグ番号10)を表すクラスです。

   OpenSSL::ASN1::GeneralString

ASN.1 の GeneralString 型(Universal タグのタグ番号27)を表すクラスです。

   OpenSSL::ASN1::GeneralizedTime

ASN.1 の GeneralizedTime 型(Universal タグのタグ番号23)を表すクラスです。

   OpenSSL::ASN1::GraphicString

ASN.1 の GraphicString 型(Universal タグのタグ番号25)を表すクラスです。

   OpenSSL::ASN1::IA5String

ASN.1 の IA5String 型(Universal タグのタグ番号22)を表すクラスです。

   OpenSSL::ASN1::ISO64String

ASN.1 の ISO64String 型(Universal タグのタグ番号26)を表すクラスです。

   OpenSSL::ASN1::Integer

ASN.1 の Integer 型(Universal タグのタグ番号2)を表すクラスです。

   OpenSSL::ASN1::Null

ASN.1 の Null 型(Universal タグのタグ番号5)を表すクラスです。

   OpenSSL::ASN1::NumericString

ASN.1 の NumericString 型(Universal タグのタグ番号18)を表すクラスです。

   OpenSSL::ASN1::ObjectId

ASN.1 のオブジェクト識別子を表すクラス。

   OpenSSL::ASN1::OctetString

ASN.1 の Octet String 型(Universal タグのタグ番号4)を表すクラスです。

   OpenSSL::ASN1::PrintableString

ASN.1 の PrintableString 型(Universal タグのタグ番号19)を表すクラスです。

   OpenSSL::ASN1::T61String

ASN.1 の T61String 型(Universal タグのタグ番号20)を表すクラスです。

   OpenSSL::ASN1::UTCTime

ASN.1 の UTCTime 型(Universal タグのタグ番号23)を表すクラスです。

   OpenSSL::ASN1::UTF8String

ASN.1 の UTF8String 型(Universal タグのタグ番号12)を表すクラスです。

   OpenSSL::ASN1::UniversalString

ASN.1 の UniversalString 型(Universal タグのタグ番号28)を表すクラスです。

   OpenSSL::ASN1::VideotexString

ASN.1 の VideotexString 型(Universal タグのタグ番号21)を表すクラスです。

OpenSSL::BN

OpenSSL内で利用される多倍長整数クラスです。

OpenSSL::Cipher

共通鍵暗号のために抽象化されたインターフェースを提供するクラスです。

  OpenSSL::Cipher::AES

AES 暗号を表すクラス

  OpenSSL::Cipher::AES128

鍵長 128 ビットの AES 暗号を表すクラス

  OpenSSL::Cipher::AES192

鍵長 192 ビットの AES 暗号を表すクラス

  OpenSSL::Cipher::AES256

鍵長 256 ビットの AES 暗号を表すクラス

  OpenSSL::Cipher::BF

BF(BlowFish)暗号を表すクラス

  OpenSSL::Cipher::CAST5

CAST5 暗号を表すクラス

  OpenSSL::Cipher::Cipher

このクラスは互換性のために存在します。

  OpenSSL::Cipher::DES

DES 暗号を表すクラス

  OpenSSL::Cipher::IDEA

IDEA 暗号を表すクラス

  OpenSSL::Cipher::RC2

RC2 暗号を表すクラス

  OpenSSL::Cipher::RC4

RC4 暗号を表すクラス

  OpenSSL::Cipher::RC5

RC5 暗号を表すクラス

OpenSSL::Config

OpenSSL の設定ファイルを表すクラスです。

OpenSSL::Engine

OpenSSL の Engine (プラグイン)を表すオブジェクトです。

OpenSSL::HMAC

HMAC を表すクラス。

OpenSSL::Netscape::SPKI

Netscape SPKI、もしくは SPKAC(Signed Public Key And Challenge) と呼ばれる データフォーマットを扱うためのクラスです。

OpenSSL::OCSP::BasicResponse

OCSP の Basic OCSP Response を表すクラスです。

OpenSSL::OCSP::CertificateId

失効状態を問い合わせたい個々の証明書を表すクラスです。

OpenSSL::OCSP::Request

OCSP リクエストを表すクラスです。

OpenSSL::OCSP::Response

OCSP レスポンダからのレスポンスを表わすオブジェクトです。

OpenSSL::PKCS7

PKCS #7 クラス

  OpenSSL::PKCS7::PKCS7

このクラスは 1.8.6 以前との互換性のために存在します。

OpenSSL::PKCS7::RecipientInfo

PKCS7 の送信先を表すクラスです。

OpenSSL::PKCS7::Signer

Alias of OpenSSL::PKCS7::SignerInfo

OpenSSL::PKCS7::SignerInfo

署名者の情報を表すクラスです。

OpenSSL::PKey::EC::Group

楕円曲線から定義される群を表すクラスです。

OpenSSL::PKey::EC::Point

楕円曲線暗号の公開鍵となる曲線上の点を表します。

OpenSSL::PKey::PKey

公開鍵暗号のための抽象クラスです。

  OpenSSL::PKey::DH

Diffie-Hellman 鍵共有クラス

  OpenSSL::PKey::DSA

DSA 公開鍵暗号クラス

  OpenSSL::PKey::EC

EC(Ellicptic Curve,楕円曲線)暗号鍵のクラスです。

  OpenSSL::PKey::RSA

RSA 暗号鍵のクラスです。

OpenSSL::SSL::SSLContext

SSL コンテキストクラス。

OpenSSL::SSL::SSLServer

SSL サーバーのためのクラス。

OpenSSL::SSL::SSLSocket

ソケットをラップして SSL での認証と暗号通信を実現するためのクラスです。

OpenSSL::SSL::Session

SSL/TLS セッションを表すクラスです。

OpenSSL::X509::Attribute

X.509 証明書署名要求の attribute を表すクラスです。

OpenSSL::X509::CRL

CRL(証明書失効リスト) クラス。

OpenSSL::X509::Certificate

X509 証明書クラス

OpenSSL::X509::Extension

X.509 v3 証明書の拡張領域のためのクラスです。

OpenSSL::X509::ExtensionFactory

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

OpenSSL::X509::Name

X.500の識別名(DN, Distinguished Name)を表わすクラス。

OpenSSL::X509::Request

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

OpenSSL::X509::Revoked

失効した証明書のクラス。

OpenSSL::X509::Store

証明書ストアクラス。

OpenSSL::X509::StoreContext

証明書ストアコンテキストクラス。

OpenSSL::Digest

ハッシュ関数のためのインターフェースを提供するクラスです。

  OpenSSL::Digest::DSS

ハッシュ関数 DSS を表すクラス

  OpenSSL::Digest::DSS1

ハッシュ関数 DSS1 を表すクラス

  OpenSSL::Digest::Digest

このクラスは互換性のために存在します。

  OpenSSL::Digest::MD2

ハッシュ関数 MD2 を表すクラス

  OpenSSL::Digest::MD4

ハッシュ関数 MD4 を表すクラス

  OpenSSL::Digest::MD5

ハッシュ関数 MD5 を表すクラス

  OpenSSL::Digest::MDC2

ハッシュ関数 MDC2 を表すクラス

  OpenSSL::Digest::RIPEMD160

ハッシュ関数 RIPEMD160 を表すクラス

  OpenSSL::Digest::SHA

ハッシュ関数 SHA を表すクラス

  OpenSSL::Digest::SHA1

ハッシュ関数 SHA1 を表すクラス

  OpenSSL::Digest::SHA224

ハッシュ関数 SHA224 を表すクラス

  OpenSSL::Digest::SHA256

ハッシュ関数 SHA256 を表すクラス

  OpenSSL::Digest::SHA384

ハッシュ関数 SHA384 を表すクラス

  OpenSSL::Digest::SHA512

ハッシュ関数 SHA512 を表すクラス

モジュール

OpenSSL

OpenSSL のすべてのクラス、モジュール、メソッド、定数を 保持しているモジュールです。

OpenSSL::ASN1

ASN.1(Abstract Syntax Notation One) のデータを取り扱うためのモジュールです。

OpenSSL::Buffering

OpenSSL::SSL::SSLSocket にバッファリング付きIO機能を提供する モジュールです。

OpenSSL::OCSP

OCSP(Online Certificate Status Protocol)を取り扱うための モジュールです。OCSP は [RFC2560] で定義されています。

OpenSSL::PKCS12

PKCS#12 (秘密鍵、証明書、関連するCA証明書を1つのファイルに保存する形式) を表すクラスです。

OpenSSL::PKCS5

OpenSSL PKCS#5 関連の機能を集めたモジュール

OpenSSL::PKey

公開鍵暗号関連を集めたモジュールです。

OpenSSL::Random

OpenSSL が利用する疑似乱数生成器関連のモジュールです。

OpenSSL::SSL
OpenSSL::SSL::SocketForwarder

to_io で返されるソケットオブジェクトにメソッドを フォワードするモジュールです。

OpenSSL::X509

OpenSSL の X509 証明書、CRL(証明書失効リスト)、 CSR(証明書署名要求)、証明書ストアなどに関するモジュールです。

例外クラス

OpenSSL::OpenSSLError

すべての OpenSSL 関連の例外クラスのベースとなる例外クラスです。

  OpenSSL::ASN1::ASN1Error

OpenSSLの ASN.1 関連のエラーが起きたときに発生する例外です。

  OpenSSL::BNError

OpenSSL::BN 関連のエラーを表す例外です。

  OpenSSL::Cipher::CipherError

共通鍵暗号関連のエラーで発生する例外のクラス。

  OpenSSL::ConfigError

設定ファイル関連のエラーが生じた場合に発生する例外のクラス。

  OpenSSL::Digest::DigestError

OpenSSL のハッシュ関数関連のエラーが起きたときに発生する例外のクラスです。

  OpenSSL::Engine::EngineError

Engine(OpenSSL::Engine) 関連のエラーが生じたときに発生する例外です。

  OpenSSL::HMACError

OpenSSL の HMAC 関連のエラーが起きた場合に発生する例外

  OpenSSL::Netscape::SPKIError

Netscape SPKI 関連のエラーが生じた場合に発生する例外です。

  OpenSSL::OCSP::OCSPError

OCSP 関連のエラーが生じた場合に発生する例外です。

  OpenSSL::PKCS12::PKCS12Error

PKCS#12 関連のエラーが生じた場合に発生する例外です。

  OpenSSL::PKCS5::PKCS5Error

OpenSSL PKCS#5 関連のエラーが起きた場合に発生する例外

  OpenSSL::PKCS7::PKCS7Error

PKCS7 関連のエラーが生じた場合に発生する例外です。

  OpenSSL::PKey::EC::Group::Error

OpenSSL::PKey::EC::Group 関連のエラーを表す例外クラスです。

  OpenSSL::PKey::EC::Point::Error

OpenSSL::PKey::EC::Point 関連のエラーを表す例外クラスです。

  OpenSSL::PKey::PKeyError

OpenSSL の公開鍵関連のエラーの場合に発生する例外

   OpenSSL::PKey::DHError

DH 鍵共有プロトコル関連のエラーが生じた場合に発生する例外です。

   OpenSSL::PKey::DSAError

DSA 関連のエラーが起きた場合に発生する例外です。

   OpenSSL::PKey::ECError

楕円曲線暗号関連のエラーが生じた場合に発生する例外です。

   OpenSSL::PKey::RSAError

RSA 関連のエラーが起きた場合に発生する例外のクラスです。

  OpenSSL::Random::RandomError

OpenSSL の乱数関連のエラーが起きた場合に発生する例外

  OpenSSL::SSL::SSLError

OpenSSL::SSL 関連のエラーが生じたときに発生する例外です。

  OpenSSL::SSL::Session::SessionError

セッション(OpenSSL::SSL::Session)関連のエラーが 生じた場合に発生する例外です。

  OpenSSL::X509::AttributeError

OpenSSL::X509::Attribute 関連のエラーが起きた場合に 発生する例外です。

  OpenSSL::X509::CRLError

OpenSSL::X509::CRL 関連のエラーが生じたときに発生します。

  OpenSSL::X509::CertificateError

X509 証明書関連のエラーを表す例外くクラスです。

  OpenSSL::X509::ExtensionError

OpenSSL::X509::Extension 関連のエラーが起きたときに発生します。

  OpenSSL::X509::NameError

OpenSSL::X509::Name 固有のエラーの場合に発生する例外です。

  OpenSSL::X509::RequestError

OpenSSL::X509::Request 関連のエラーを表す例外クラスです。

  OpenSSL::X509::RevokedError

OpenSSL::X509::Revoked 関連のエラーが生じたときに発生します。

  OpenSSL::X509::StoreError

OpenSSL::X509::Store 関連のエラーを表す例外クラスです。

追加・再定義されるメソッド

Integer#to_bn