class Heroku::OpenSSL::CertificateRequest

Attributes

domain[RW]
key_size[RW]
self_signed[RW]
subject[RW]

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/heroku/open_ssl.rb, line 22
def initialize()
  @key_size = 2048
  @self_signed = false
  super
end

Public Instance Methods

generate() click to toggle source
# File lib/heroku/open_ssl.rb, line 28
def generate
  if self_signed
    generate_self_signed_certificate
  else
    generate_csr
  end
end

Private Instance Methods

generate_csr() click to toggle source
# File lib/heroku/open_ssl.rb, line 46
def generate_csr
  keyfile = "#{domain}.key"
  csrfile = "#{domain}.csr"

  openssl_req_new(keyfile, csrfile) or raise GenericError, "Key and CSR generation failed: #{$?}"

  return Result.new(self, keyfile, csrfile, nil)
end
generate_self_signed_certificate() click to toggle source
# File lib/heroku/open_ssl.rb, line 55
def generate_self_signed_certificate
  keyfile = "#{domain}.key"
  crtfile = "#{domain}.crt"

  openssl_req_new(keyfile, crtfile, "-x509") or raise GenericError, "Key and self-signed certificate generation failed: #{$?}"

  return Result.new(self, keyfile, nil, crtfile)
end
openssl_req_new(keyfile, outfile, *args) click to toggle source
# File lib/heroku/open_ssl.rb, line 64
def openssl_req_new(keyfile, outfile, *args)
  Heroku::OpenSSL.ensure_openssl_installed!
  Heroku::OpenSSL.openssl("req", "-new", "-newkey", "rsa:#{key_size}", "-nodes", "-keyout", keyfile, "-out", outfile, "-subj", subject, *args)
end