superclass=Object
type=class
library=openssl
extended=
included=

X.509 ξ̾׵(Certificate Signing Request, CSR)ɽ魯
饹Ǥ

X.509 CSR ˤĤƤ [[RFC:2986]] ʤɤ򻲾ȤƤ

=== 

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
