Class: Hobo::Lib::SelfSignedCertGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/hobo/lib/self_signed_cert_generator.rb

Class Method Summary collapse

Class Method Details

.generate(domain) ⇒ Object



4
5
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
# File 'lib/hobo/lib/self_signed_cert_generator.rb', line 4

def self.generate domain
  key = OpenSSL::PKey::RSA.new(2048)
  public_key = key.public_key
 
  subject = "/C=UK/ST=/O=Inviqa/localityName=London/commonName=*.#{domain}/organizationalUnitName=/[email protected]"
 
  cert = OpenSSL::X509::Certificate.new
  cert.subject = cert.issuer = OpenSSL::X509::Name.parse(subject)
  cert.not_before = Time.now
  cert.not_after = Time.now + 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

  {
    :key => key.to_pem.to_s.strip,
    :cert => cert.to_pem.to_s.strip
  }
end