# module Unicorn::SSLServer

this module is meant to be included in Unicorn::HttpServer It is an implementation detail and NOT meant for users.

### Attributes

ssl_engine[RW]

### Public Instance Methods

ssl_enable!() click to toggle source

    # File lib/unicorn/ssl_server.rb, line 7
    def ssl_enable!
      sni_hostnames = rack_sni_hostnames(@app)
      seen = {} # we map a single SSLContext to multiple listeners
      listener_ctx = {}
      @listener_opts.each do |address, address_opts|
        ssl_opts = address_opts[:ssl_opts] or next
        listener_ctx[address] = seen[ssl_opts.object_id] ||= begin
          unless sni_hostnames.empty?
            ssl_opts = ssl_opts.dup
            ssl_opts[:sni_hostnames] = sni_hostnames
          end
          ctx = Flipper.ssl_context(ssl_opts)
          # FIXME: make configurable
          ctx.session_cache_mode = OpenSSL::SSL::SSLContext::SESSION_CACHE_OFF
          ctx
        end
      end
      Unicorn::HttpServer::LISTENERS.each do |listener|
        ctx = listener_ctx[sock_name(listener)] or next
        listener.extend(Kgio::SSLServer)
        listener.ssl_ctx = ctx
        listener.kgio_ssl_class = Unicorn::SSLClient
      end
    end