免責事項:私はTraefikを初めて使用しているので、私が気づいていないより優れた解決策があるかもしれません。
a Python script by JayH5は、acme.jsonファイルからキーファイルを抽出するために使用されています。
def read_domain_certs(acme_json_path, domain):
with open(acme_json_path) as acme_json_file:
acme_json = json.load(acme_json_file)
certs_json = acme_json['DomainsCertificate']['Certs']
domain_certs = [cert['Certificate'] for cert in certs_json
if cert['Domains']['Main'] == domain]
if not domain_certs:
raise RuntimeError(
'Unable to find certificate for domain "%s"' % (domain,))
elif len(domain_certs) > 1:
raise RuntimeError(
'More than one (%d) certificates for domain "%s"' % (domain,))
[domain_cert] = domain_certs
return (base64.b64decode(domain_cert['PrivateKey']),
base64.b64decode(domain_cert['Certificate']))
ユースケースによっては、ファイルを保存せずに、そのコードを使用してJSONファイルから直接キーを読み込むことができます。ただし、PEMファイルが必要な場合は、ディスクにファイルが必要な場合は、スクリプトはキーコンテンツも書き込みます。
def write_cert(storage_dir, filename, cert_content):
cert_path = os.path.join(storage_dir, filename)
with open(cert_path, 'w') as cert_file:
cert_file.write(cert_content)
os.chmod(cert_path, 0o600)