مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2026-01-17 05:33:35 +00:00
@@ -41,15 +41,20 @@ class TrackCertificate < ApplicationRecord
|
|||||||
self.verification_path = challenge.filename
|
self.verification_path = challenge.filename
|
||||||
self.verification_string = challenge.file_content
|
self.verification_string = challenge.file_content
|
||||||
self.save!
|
self.save!
|
||||||
|
logger.info "Attempting verification of #{self.domain}"
|
||||||
challenge.request_verification
|
challenge.request_verification
|
||||||
checks = 0
|
checks = 0
|
||||||
until challenge.verify_status != "pending"
|
until challenge.verify_status != "pending"
|
||||||
checks += 1
|
checks += 1
|
||||||
return false if checks > 30
|
if checks > 30
|
||||||
|
logger.info "Status remained at pending for 30 checks"
|
||||||
|
return false
|
||||||
|
end
|
||||||
sleep 1
|
sleep 1
|
||||||
end
|
end
|
||||||
|
|
||||||
unless challenge.verify_status == "valid"
|
unless challenge.verify_status == "valid"
|
||||||
|
logger.info "Status was not valid (was: #{challenge.verify_status})"
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -58,6 +63,7 @@ class TrackCertificate < ApplicationRecord
|
|||||||
@retries = 0
|
@retries = 0
|
||||||
if e.is_a?(Acme::Client::Error::BadNonce) && @retries < 5
|
if e.is_a?(Acme::Client::Error::BadNonce) && @retries < 5
|
||||||
@retries += 1
|
@retries += 1
|
||||||
|
logger.info "Bad nounce encountered. Retrying (#{@retries} of 5 attempts)"
|
||||||
sleep 1
|
sleep 1
|
||||||
verify
|
verify
|
||||||
else
|
else
|
||||||
@@ -71,12 +77,14 @@ class TrackCertificate < ApplicationRecord
|
|||||||
private_key = OpenSSL::PKey::RSA.new(self.key)
|
private_key = OpenSSL::PKey::RSA.new(self.key)
|
||||||
csr.public_key = private_key.public_key
|
csr.public_key = private_key.public_key
|
||||||
csr.sign(private_key, OpenSSL::Digest::SHA256.new)
|
csr.sign(private_key, OpenSSL::Digest::SHA256.new)
|
||||||
|
logger.info "Getting certificate for #{self.domain}"
|
||||||
https_cert = Postal::LetsEncrypt.client.new_certificate(csr)
|
https_cert = Postal::LetsEncrypt.client.new_certificate(csr)
|
||||||
self.certificate = https_cert.to_pem
|
self.certificate = https_cert.to_pem
|
||||||
self.intermediaries = https_cert.chain_to_pem
|
self.intermediaries = https_cert.chain_to_pem
|
||||||
self.expires_at = https_cert.x509.not_after
|
self.expires_at = https_cert.x509.not_after
|
||||||
self.renew_after = (self.expires_at - 1.month) + rand(10).days
|
self.renew_after = (self.expires_at - 1.month) + rand(10).days
|
||||||
self.save!
|
self.save!
|
||||||
|
logger.info "Certificate issued (expires on #{self.expires_at}, will renew after #{self.renew_after})"
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -92,4 +100,8 @@ class TrackCertificate < ApplicationRecord
|
|||||||
@key_object ||= OpenSSL::PKey::RSA.new(self.key)
|
@key_object ||= OpenSSL::PKey::RSA.new(self.key)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def logger
|
||||||
|
Postal::LetsEncrypt.logger
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم