Top Level Namespace

Instance Method Summary collapse

Instance Method Details

#get_cert_fingerprints(crt) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/facter/dehydrated_config.rb', line 26

def get_cert_fingerprints(crt)
  raw_cert = File.read(crt)
  cert = OpenSSL::X509::Certificate.new raw_cert
  der = cert.to_der

  {
    sha1: OpenSSL::Digest::SHA1.new(der).to_s,
    sha256: OpenSSL::Digest::SHA256.new(der).to_s,
  }
end

#get_cert_serial(crt) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/facter/dehydrated_config.rb', line 16

def get_cert_serial(crt)
  raw_cert = File.read(crt)
  begin
    cert = OpenSSL::X509::Certificate.new raw_cert
    cert.serial.to_s
  rescue OpenSSL::X509::CertificateError
    ''
  end
end

#get_certificate(crt) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/facter/dehydrated_certificates.rb', line 14

def get_certificate(crt)
  return unless File.exist?(crt)

  raw_cert = File.read(crt)
  begin
    raw_cert
  rescue OpenSSL::X509::CertificateError
    nil
  end
end

#get_file(filename) ⇒ Object



8
9
10
11
12
# File 'lib/facter/dehydrated_certificates.rb', line 8

def get_file(filename)
  return unless File.exist?(filename)

  File.read(filename)
end

#handle_requests(config) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/facter/dehydrated_certificates.rb', line 25

def handle_requests(config)
  return unless config

  requests = JSON.parse(File.read(config['dehydrated_requests_config']))
  dehydrated_puppetmaster = config['dehydrated_puppetmaster']
  dehydrated_host = config['dehydrated_host']

  if dehydrated_puppetmaster != dehydrated_host
    requests.each do |request_fqdn, certificate_requests|
      certificate_requests.each do |dn, certificate_config|
        base_filename = certificate_config['base_filename']
        request_base_dir = certificate_config['request_base_dir']

        crt_file = "#{request_base_dir}/#{base_filename}.crt"
        crt = get_certificate(crt_file)
        requests[request_fqdn][dn]['crt'] = crt
        if crt
          ca_file = "#{request_base_dir}/#{base_filename}_ca.pem"
          requests[request_fqdn][dn]['ca'] = get_file(ca_file)
        end
      end
    end
  end
  requests
end