Search code examples
ruby-on-rails-3opensslrackwebrick

How do I configure WEBrick to use an intermediate certificate with HTTPS?


I am currently using the following options in my Rails app to enable HTTPS with WEBrick:

{
    :Port => 3000,
    :environment => (ENV['RAILS_ENV'] || "development").dup,
    :daemonize => false,
    :debugger => false,
    :pid => File.expand_path("tmp/pids/server.pid"),
    :config => File.expand_path("config.ru"),
    :SSLEnable => true,
    :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
    :SSLPrivateKey => OpenSSL::PKey::RSA.new(
        File.open("certificates/https/key.pem").read),
    :SSLCertificate => OpenSSL::X509::Certificate.new(
        File.open("certificates/https/cert.pem").read),
    :SSLCertName => [["CN", WEBrick::Utils::getservername]]
}

How would I go about specifying an intermediate certificate?


Solution

  • I managed to find an answer after an extra hour of googling for keywords. Here is the option to define an intermediate certificate:

    :SSLExtraChainCert => [
        OpenSSL::X509::Certificate.new(
          File.open("certificates/intermediate.crt").read)]
    

    Note that the option requires an Array object, allowing to you include multiple certificates if needed.