92: def requestcert
93: begin
94: cert, cacert = caclient.getcert(@csr.to_pem)
95: rescue => detail
96: if Puppet[:trace]
97: puts detail.backtrace
98: end
99: raise Puppet::Error.new("Certificate retrieval failed: %s" %
100: detail)
101: end
102:
103: if cert.nil? or cert == ""
104: return nil
105: end
106: Puppet.settings.write(:hostcert) do |f| f.print cert end
107: Puppet.settings.write(:localcacert) do |f| f.print cacert end
108:
109:
110: begin
111: @cert = OpenSSL::X509::Certificate.new(cert)
112: @cacert = OpenSSL::X509::Certificate.new(cacert)
113: retrieved = true
114: rescue => detail
115: raise Puppet::Error.new(
116: "Invalid certificate: %s" % detail
117: )
118: end
119:
120: unless @cert.check_private_key(@key)
121: raise Puppet::DevError, "Received invalid certificate"
122: end
123: return retrieved
124: end