summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorVladimir Shushlin <vshushlin@gitlab.com>2019-06-26 11:47:21 +0000
committerNick Thomas <nick@gitlab.com>2019-06-26 11:47:21 +0000
commit7f85e92ff1e1c4fdd10a2e8b3541d8478c24aa16 (patch)
tree717fa0bdd3fa6c3970012a004b5c0f352cd95d37 /app/services
parentdfc1f1dd66c19653ecfc71b904df4a8f6ccb64e3 (diff)
downloadgitlab-ce-7f85e92ff1e1c4fdd10a2e8b3541d8478c24aa16.tar.gz
Speed up obtaining Let's Encrypt certificates
Diffstat (limited to 'app/services')
-rw-r--r--app/services/pages_domains/obtain_lets_encrypt_certificate_service.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/app/services/pages_domains/obtain_lets_encrypt_certificate_service.rb b/app/services/pages_domains/obtain_lets_encrypt_certificate_service.rb
index 3413a9e4612..58f795e639e 100644
--- a/app/services/pages_domains/obtain_lets_encrypt_certificate_service.rb
+++ b/app/services/pages_domains/obtain_lets_encrypt_certificate_service.rb
@@ -2,6 +2,14 @@
module PagesDomains
class ObtainLetsEncryptCertificateService
+ # time for processing validation requests for acme challenges
+ # 5-15 seconds is usually enough
+ CHALLENGE_PROCESSING_DELAY = 1.minute.freeze
+
+ # time LetsEncrypt ACME server needs to generate the certificate
+ # no particular SLA, usually takes 10-15 seconds
+ CERTIFICATE_PROCESSING_DELAY = 1.minute.freeze
+
attr_reader :pages_domain
def initialize(pages_domain)
@@ -14,6 +22,7 @@ module PagesDomains
unless acme_order
::PagesDomains::CreateAcmeOrderService.new(pages_domain).execute
+ PagesDomainSslRenewalWorker.perform_in(CHALLENGE_PROCESSING_DELAY, pages_domain.id)
return
end
@@ -23,6 +32,7 @@ module PagesDomains
case api_order.status
when 'ready'
api_order.request_certificate(private_key: acme_order.private_key, domain: pages_domain.domain)
+ PagesDomainSslRenewalWorker.perform_in(CERTIFICATE_PROCESSING_DELAY, pages_domain.id)
when 'valid'
save_certificate(acme_order.private_key, api_order)
acme_order.destroy!