Class: LocalDevelopmentGateway::DatabaseRouter::Drivers::PostgreSqlCertificate

Inherits:
Object
  • Object
show all
Defined in:
lib/local_development_gateway/database_router/drivers/postgre_sql_certificate.rb

Instance Method Summary collapse

Constructor Details

#initializePostgreSqlCertificate

Returns a new instance of PostgreSqlCertificate.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/local_development_gateway/database_router/drivers/postgre_sql_certificate.rb', line 8

def initialize
  @key = OpenSSL::PKey::EC.generate("prime256v1")
  @certificate = OpenSSL::X509::Certificate.new
  @certificate.version = 2
  @certificate.serial = 1
  @certificate.subject =
    OpenSSL::X509::Name.parse("/CN=local-development-gateway")
  @certificate.issuer = @certificate.subject
  @certificate.public_key = @key
  @certificate.not_before = Time.now - 60
  @certificate.not_after = Time.now + (10 * 365 * 24 * 60 * 60)
  extensions = OpenSSL::X509::ExtensionFactory.new
  extensions.subject_certificate = @certificate
  extensions.issuer_certificate = @certificate
  @certificate.add_extension(
    extensions.create_extension("basicConstraints", "CA:FALSE", true)
  )
  @certificate.add_extension(
    extensions.create_extension("keyUsage", "digitalSignature", true)
  )
  @certificate.add_extension(
    extensions.create_extension("extendedKeyUsage", "serverAuth")
  )
  @certificate.sign(@key, OpenSSL::Digest::SHA256.new)
end

Instance Method Details

#context(&servername_callback) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/local_development_gateway/database_router/drivers/postgre_sql_certificate.rb', line 34

def context(&servername_callback)
  context = OpenSSL::SSL::SSLContext.new
  context.cert = @certificate
  context.key = @key
  context.min_version = OpenSSL::SSL::TLS1_2_VERSION
  context.servername_cb = servername_callback
  context
end