requires=
classes=OpenSSL,OpenSSL=OpenSSLError,OpenSSL=ASN1,OpenSSL=ASN1=ASN1Error,OpenSSL=ASN1=ASN1Data,OpenSSL=ASN1=Constructive,OpenSSL=ASN1=Set,OpenSSL=ASN1=Sequence,OpenSSL=ASN1=ObjectId,OpenSSL=ASN1=Primitive,OpenSSL=ASN1=Boolean,OpenSSL=ASN1=Integer,OpenSSL=ASN1=Enumerated,OpenSSL=ASN1=BitString,OpenSSL=ASN1=OctetString,OpenSSL=ASN1=UTF8String,OpenSSL=ASN1=NumericString,OpenSSL=ASN1=PrintableString,OpenSSL=ASN1=T61String,OpenSSL=ASN1=VideotexString,OpenSSL=ASN1=IA5String,OpenSSL=ASN1=GraphicString,OpenSSL=ASN1=ISO64String,OpenSSL=ASN1=GeneralString,OpenSSL=ASN1=UniversalString,OpenSSL=ASN1=BMPString,OpenSSL=ASN1=Null,OpenSSL=ASN1=UTCTime,OpenSSL=ASN1=GeneralizedTime,OpenSSL=BN,OpenSSL=BNError,OpenSSL=Cipher,OpenSSL=Cipher=Cipher,OpenSSL=Cipher=AES,OpenSSL=Cipher=AES128,OpenSSL=Cipher=AES192,OpenSSL=Cipher=AES256,OpenSSL=Cipher=BF,OpenSSL=Cipher=CAST5,OpenSSL=Cipher=DES,OpenSSL=Cipher=IDEA,OpenSSL=Cipher=RC2,OpenSSL=Cipher=RC4,OpenSSL=Cipher=RC5,OpenSSL=Cipher=CipherError,OpenSSL=Config,OpenSSL=ConfigError,OpenSSL=Digest,OpenSSL=Digest=DSS,OpenSSL=Digest=DSS1,OpenSSL=Digest=MD2,OpenSSL=Digest=MD4,OpenSSL=Digest=MD5,OpenSSL=Digest=MDC2,OpenSSL=Digest=RIPEMD160,OpenSSL=Digest=SHA,OpenSSL=Digest=SHA1,OpenSSL=Digest=SHA224,OpenSSL=Digest=SHA256,OpenSSL=Digest=SHA384,OpenSSL=Digest=SHA512,OpenSSL=Digest=DigestError,OpenSSL=Digest=Digest,OpenSSL=Engine,OpenSSL=Engine=EngineError,OpenSSL=HMAC,OpenSSL=HMACError,OpenSSL=Netscape=SPKI,OpenSSL=Netscape=SPKIError,OpenSSL=OCSP,OpenSSL=OCSP=OCSPError,OpenSSL=OCSP=BasicResponse,OpenSSL=OCSP=CertificateId,OpenSSL=OCSP=Request,OpenSSL=OCSP=Response,OpenSSL=PKCS5,OpenSSL=PKCS5=PKCS5Error,OpenSSL=PKCS12,OpenSSL=PKCS12=PKCS12Error,OpenSSL=PKCS7,OpenSSL=PKCS7=PKCS7,OpenSSL=PKCS7=RecipientInfo,OpenSSL=PKCS7=SignerInfo,OpenSSL=PKCS7=Signer,OpenSSL=PKCS7=PKCS7Error,OpenSSL=PKey,OpenSSL=PKey=PKey,OpenSSL=PKey=PKeyError,OpenSSL=PKey=DH,OpenSSL=PKey=DHError,OpenSSL=PKey=DSA,OpenSSL=PKey=DSAError,OpenSSL=PKey=RSA,OpenSSL=PKey=RSAError,OpenSSL=PKey=EC,OpenSSL=PKey=ECError,OpenSSL=PKey=EC=Group,OpenSSL=PKey=EC=Point,OpenSSL=PKey=EC=Group=Error,OpenSSL=PKey=EC=Point=Error,OpenSSL=Random,OpenSSL=Random=RandomError,OpenSSL=SSL,OpenSSL=SSL=SSLError,OpenSSL=SSL=SSLContext,OpenSSL=SSL=SSLServer,OpenSSL=SSL=SocketForwarder,OpenSSL=Buffering,OpenSSL=SSL=SSLSocket,OpenSSL=SSL=Session,OpenSSL=SSL=Session=SessionError,OpenSSL=X509,OpenSSL=X509=Attribute,OpenSSL=X509=AttributeError,OpenSSL=X509=CRL,OpenSSL=X509=CRLError,OpenSSL=X509=Certificate,OpenSSL=X509=CertificateError,OpenSSL=X509=Extension,OpenSSL=X509=ExtensionError,OpenSSL=X509=ExtensionFactory,OpenSSL=X509=Name,OpenSSL=X509=NameError,OpenSSL=X509=Request,OpenSSL=X509=RequestError,OpenSSL=X509=Revoked,OpenSSL=X509=RevokedError,OpenSSL=X509=Store,OpenSSL=X509=StoreError,OpenSSL=X509=StoreContext
methods=Integer/i.to_bn.openssl
sublibraries=
is_sublibrary=false
category=Network

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

このドキュメントでは SSL/TLS の一般的事項については
解説をしません。利用者は、SSL/TLSの各概念、例えば
以下の事項について理解している必要があります。
  * 暗号と認証に関する一般的概念
  * セキュリティに対する攻撃法
  * 公開鍵暗号と秘密鍵暗号
  * 署名の役割、署名の方法とその検証
  * 公開鍵基盤(PKI, Public Key Infrastructure)
  * X.509 証明書
  * 暗号と乱数について
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

===[a:references] 参考文献
  * [[RFC:5246]]
  * Eric Rescorla. SSL and TLS : Designing and Building Secure Systems.
    邦訳, Eric Rescorla 著 齋藤孝道・鬼頭利之・古森貞監訳.
    マスタリングTCP/IP SSL/TLS編
  * John Viega, Matt Messier and Pravir Chandra. Network Security with OpenSSL:
    Cryptography for Secure Communications. 
    邦訳, John Viega, Matt Messier and Pravir Chandra 著 齋藤孝道監訳.
    OpenSSL -暗号・PKI・SSL/TLSライブラリの詳細-
