class Ant::SSL::Certificate

Attributes

cert[R]
key[R]

Public Class Methods

new(config, inventory) click to toggle source
# File lib/ant/ssl/certificate.rb, line 8
def initialize(config, inventory)
  @config = config
  @inventory = inventory
  @key = OpenSSL::PKey::RSA.new(@config['key_size'])
  @cert = OpenSSL::X509::Certificate.new
  @cert.public_key = @key.public_key
  @extensions = OpenSSL::X509::ExtensionFactory.new
  @extensions.subject_certificate = @cert
end

Public Instance Methods

ca_name() click to toggle source
# File lib/ant/ssl/certificate.rb, line 46
def ca_name
  @config['ca']
end
configure_details!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 27
def configure_details!
  @config.configure_cert_details!(@cert)
end
configure_extensions!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 31
def configure_extensions!
  @extensions.issuer_certificate = @ca.cert
  @config.configure_extensions!(@cert, @extensions)
end
create!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 18
def create!
  # return if File.file?(@config.key_path)
  @ca = @inventory.ca(@config['parent'])
  configure_details!
  configure_extensions!
  sign!
  save!
end
save!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 41
def save!
  File.write(@config.key_path, @key.to_s)
  File.write(@config.crt_path, @cert.to_s)
end
sign!() click to toggle source
# File lib/ant/ssl/certificate.rb, line 36
def sign!
  @cert.issuer = @ca.cert.subject
  @cert.sign(@ca.key, OpenSSL::Digest::SHA256.new)
end