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