Module: Central::Machine::CertHelper

Included in:
Aws::AuthProvisioner, Aws::MasterProvisioner, DigitalOcean::MasterProvisioner
Defined in:
lib/central/machine/cert_helper.rb

Instance Method Summary collapse

Instance Method Details

#generate_self_signed_certObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/central/machine/cert_helper.rb', line 6

def generate_self_signed_cert
  key = OpenSSL::PKey::RSA.new(2048)
  public_key = key.public_key

  # subject = '/C=FI/O=Test/OU=Test/CN=Test'
  subject = '/CN=api.bluebeluga.io/O=The BlueBeluga Company/C=US'

  cert = OpenSSL::X509::Certificate.new
  cert.subject = cert.issuer = OpenSSL::X509::Name.parse(subject)
  cert.not_before = Time.now
  cert.not_after = Time.now + (10 * 365 * 24 * 60 * 60)
  cert.public_key = public_key
  cert.serial = 0x0
  cert.version = 2

  ef = OpenSSL::X509::ExtensionFactory.new
  ef.subject_certificate = cert
  ef.issuer_certificate = cert
  cert.extensions = [
    ef.create_extension('basicConstraints', 'CA:TRUE', true),
    ef.create_extension('subjectKeyIdentifier', 'hash')
  ]
  cert.add_extension ef.create_extension('authorityKeyIdentifier',
                                         'keyid:always,issuer:always')

  cert.sign key, OpenSSL::Digest::SHA1.new

  pem = cert.to_pem
  pem << key.to_s
  pem
end