blob: e289a78091bf97d3fe6f1b171a7873efbc5a9cda (
plain)
1
2
3
4
5
6
7
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
33
34
35
36
37
38
39
|
# frozen_string_literal: true
module PagesDomains
class CreateAcmeOrderService
# elliptic curve algorithm to generate the private key
ECDSA_CURVE = "prime256v1"
attr_reader :pages_domain
def initialize(pages_domain)
@pages_domain = pages_domain
end
def execute
lets_encrypt_client = Gitlab::LetsEncrypt::Client.new
order = lets_encrypt_client.new_order(pages_domain.domain)
challenge = order.new_challenge
private_key = if Feature.enabled?(:pages_lets_encrypt_ecdsa, pages_domain.project)
OpenSSL::PKey::EC.generate(ECDSA_CURVE)
else
OpenSSL::PKey::RSA.new(4096)
end
saved_order = pages_domain.acme_orders.create!(
url: order.url,
expires_at: order.expires,
private_key: private_key.to_pem,
challenge_token: challenge.token,
challenge_file_content: challenge.file_content
)
challenge.request_validation
saved_order
end
end
end
|