Class: Acmesmith::OrderingService
- Inherits:
-
Object
- Object
- Acmesmith::OrderingService
- Defined in:
- lib/acmesmith/ordering_service.rb
Defined Under Namespace
Classes: NotCompleted
Instance Attribute Summary collapse
-
#acme ⇒ Object
readonly
Returns the value of attribute acme.
-
#challenge_responder_rules ⇒ Object
readonly
Returns the value of attribute challenge_responder_rules.
-
#identifiers ⇒ Object
readonly
Returns the value of attribute identifiers.
-
#not_after ⇒ Object
readonly
Returns the value of attribute not_after.
-
#not_before ⇒ Object
readonly
Returns the value of attribute not_before.
Instance Method Summary collapse
- #certificate ⇒ Object
- #common_name ⇒ String
- #csr ⇒ Acme::Client::CertificateRequest
- #ensure_authorization ⇒ Object
- #finalize_order ⇒ Object
-
#initialize(acme:, identifiers:, challenge_responder_rules:, not_before: nil, not_after: nil) ⇒ OrderingService
constructor
A new instance of OrderingService.
-
#order ⇒ Object
Acme::Client::Resources::Order[].
- #perform! ⇒ Object
- #sans ⇒ Array<String>
- #wait_order_for_complete ⇒ Object
Constructor Details
#initialize(acme:, identifiers:, challenge_responder_rules:, not_before: nil, not_after: nil) ⇒ OrderingService
Returns a new instance of OrderingService.
13 14 15 16 17 18 19 |
# File 'lib/acmesmith/ordering_service.rb', line 13 def initialize(acme:, identifiers:, challenge_responder_rules:, not_before: nil, not_after: nil) @acme = acme @identifiers = identifiers @challenge_responder_rules = challenge_responder_rules @not_before = not_before @not_after = not_after end |
Instance Attribute Details
#acme ⇒ Object (readonly)
Returns the value of attribute acme.
21 22 23 |
# File 'lib/acmesmith/ordering_service.rb', line 21 def acme @acme end |
#challenge_responder_rules ⇒ Object (readonly)
Returns the value of attribute challenge_responder_rules.
21 22 23 |
# File 'lib/acmesmith/ordering_service.rb', line 21 def challenge_responder_rules @challenge_responder_rules end |
#identifiers ⇒ Object (readonly)
Returns the value of attribute identifiers.
21 22 23 |
# File 'lib/acmesmith/ordering_service.rb', line 21 def identifiers @identifiers end |
#not_after ⇒ Object (readonly)
Returns the value of attribute not_after.
21 22 23 |
# File 'lib/acmesmith/ordering_service.rb', line 21 def not_after @not_after end |
#not_before ⇒ Object (readonly)
Returns the value of attribute not_before.
21 22 23 |
# File 'lib/acmesmith/ordering_service.rb', line 21 def not_before @not_before end |
Instance Method Details
#certificate ⇒ Object
80 81 82 |
# File 'lib/acmesmith/ordering_service.rb', line 80 def certificate @certificate or raise NotCompleted, "not completed yet" end |
#common_name ⇒ String
90 91 92 |
# File 'lib/acmesmith/ordering_service.rb', line 90 def common_name identifiers.first end |
#csr ⇒ Acme::Client::CertificateRequest
100 101 102 |
# File 'lib/acmesmith/ordering_service.rb', line 100 def csr @csr ||= Acme::Client::CertificateRequest.new(subject: { common_name: common_name }, names: sans) end |
#ensure_authorization ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/acmesmith/ordering_service.rb', line 48 def return if order..empty? || order.status == 'ready' puts "=> Looking for required domain authorizations" puts order..map(&:domain).each do |domain| puts " * #{domain}" end puts AuthorizationService.new(challenge_responder_rules, order.).perform! end |
#finalize_order ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/acmesmith/ordering_service.rb', line 60 def finalize_order puts puts "=> Finalizing the order" puts puts csr.csr.to_pem puts print " * Requesting..." order.finalize(csr: csr) puts" [ ok ]" end |
#order ⇒ Object
Returns Acme::Client::Resources::Order[].
85 86 87 |
# File 'lib/acmesmith/ordering_service.rb', line 85 def order @order or raise "BUG: order not yet generated" end |
#perform! ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/acmesmith/ordering_service.rb', line 23 def perform! puts "=> Ordering a certificate for the following identifiers:" puts puts " * CN: #{common_name}" sans.each do |san| puts " * SAN: #{san}" end puts puts "=> Placing an order" @order = acme.new_order(identifiers: identifiers, not_before: not_before, not_after: not_after) puts " * URL: #{order.url}" () finalize_order() wait_order_for_complete() @certificate = Certificate.by_issuance(order.certificate, csr) puts puts "=> Certificate issued" nil end |
#sans ⇒ Array<String>
95 96 97 |
# File 'lib/acmesmith/ordering_service.rb', line 95 def sans identifiers[1..-1] end |
#wait_order_for_complete ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/acmesmith/ordering_service.rb', line 72 def wait_order_for_complete while %w(ready processing).include?(order.status) order.reload() puts " * Waiting for complete: status=#{order.status}" sleep 2 end end |