Falcon SourceFalconEnvironmentSelfSignedTLS

module SelfSignedTLS

Provides an environment that exposes a self-signed TLS certificate using the localhost gem.

Definitions

def ssl_session_id

The default session identifier for the session cache.

Signature

returns String

Implementation

def ssl_session_id
	"falcon"
end

def ssl_context

The SSL context to use for incoming connections.

Signature

returns OpenSSL::SSL::SSLContext

Implementation

def ssl_context
	contexts = Localhost::Authority.fetch(authority)
	
	contexts.server_context.tap do |context|
		context.alpn_select_cb = lambda do |protocols|
			if protocols.include? "h2"
				return "h2"
			elsif protocols.include? "http/1.1"
				return "http/1.1"
			elsif protocols.include? "http/1.0"
				return "http/1.0"
			else
				return nil
			end
		end
		
		context.session_id_context = ssl_session_id
	end
end