diff options
Diffstat (limited to 'lib/puppet/network/http/webrick.rb')
| -rw-r--r-- | lib/puppet/network/http/webrick.rb | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/lib/puppet/network/http/webrick.rb b/lib/puppet/network/http/webrick.rb index 762c29451..8ccf974c6 100644 --- a/lib/puppet/network/http/webrick.rb +++ b/lib/puppet/network/http/webrick.rb @@ -3,6 +3,9 @@ require 'webrick/https' require 'puppet/network/http/webrick/rest' require 'thread' +require 'puppet/ssl/certificate' +require 'puppet/ssl/certificate_revocation_list' + class Puppet::Network::HTTP::WEBrick def initialize(args = {}) @listening = false @@ -54,7 +57,7 @@ class Puppet::Network::HTTP::WEBrick end end - # Configure out http log file. + # Configure our http log file. def setup_logger # Make sure the settings are all ready for us. Puppet.settings.use(:main, :ssl, Puppet[:name]) @@ -84,39 +87,43 @@ class Puppet::Network::HTTP::WEBrick def setup_ssl results = {} - results[:SSLCertificateStore] = setup_crl if Puppet[:cacrl] != 'false' + host = Puppet::SSL::Host.new + + host.generate unless host.key + + raise Puppet::Error, "Could not retrieve certificate for %s" % host.name unless host.certificate - results[:SSLCertificate] = self.cert - results[:SSLPrivateKey] = self.key + results[:SSLPrivateKey] = host.key.content + results[:SSLCertificate] = host.certificate.content results[:SSLStartImmediately] = true results[:SSLEnable] = true + + unless Puppet::SSL::Certificate.find("ca") + raise Puppet::Error, "Could not find CA certificate" + end + results[:SSLCACertificateFile] = Puppet[:localcacert] results[:SSLVerifyClient] = OpenSSL::SSL::VERIFY_PEER + + # LAK:NOTE I'm not sure why this is this way, actually. results[:SSLCertName] = nil + results[:SSLCertificateStore] = setup_ssl_store if Puppet[:cacrl] != 'false' + results end # Create our Certificate revocation list - def setup_crl - nil - if Puppet[:cacrl] == 'false' - # No CRL, no store needed - return nil - end - unless File.exist?(Puppet[:cacrl]) + def setup_ssl_store + unless crl = Puppet::SSL::CertificateRevocationList.find("ca") raise Puppet::Error, "Could not find CRL; set 'cacrl' to 'false' to disable CRL usage" end - crl = OpenSSL::X509::CRL.new(File.read(Puppet[:cacrl])) store = OpenSSL::X509::Store.new store.purpose = OpenSSL::X509::PURPOSE_ANY store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL|OpenSSL::X509::V_FLAG_CRL_CHECK - unless self.ca_cert - raise Puppet::Error, "Could not find CA certificate" - end store.add_file(Puppet[:localcacert]) - store.add_crl(crl) + store.add_crl(crl.content) return store end |
