면책 조항 : 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)