Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def request_certificate(logger, acme_client, elb_name, authorizations, csr):
logger.emit("updating-elb.request-cert", elb_name=elb_name)
cert_response, _ = acme_client.poll_and_request_issuance(
josepy.util.ComparableX509(
OpenSSL.crypto.load_certificate_request(
OpenSSL.crypto.FILETYPE_ASN1,
csr.public_bytes(serialization.Encoding.DER),
)
),
authzrs=[authz_record.authz for authz_record in authorizations],
)
pem_certificate = OpenSSL.crypto.dump_certificate(
OpenSSL.crypto.FILETYPE_PEM, cert_response.body
)
pem_certificate_chain = b"\n".join(
OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
for cert in acme_client.fetch_chain(cert_response)
)
return pem_certificate, pem_certificate_chain
def revoke(ctx, reason, cert_paths):
'''
Revoke existing certificates.
'''
for cert_path in cert_paths:
with open(cert_path, 'rb') as certfile:
crt = crypto.load_certificate(crypto.FILETYPE_PEM, certfile.read())
try:
ctx.obj.acme.revoke(ComparableX509(crt), REVOCATION_REASONS[reason])
except messages.Error as e:
logger.error(e)
def _generate_csr(key, key_digest, domains):
csr = crypto.X509Req()
csr.set_version(2)
csr.set_pubkey(key)
sans = ', '.join('DNS:{}'.format(d) for d in domains)
exts = [crypto.X509Extension(b'subjectAltName', False, b(sans))]
csr.add_extensions(exts)
csr.sign(key, str(key_digest))
return ComparableX509(csr)
regr = acme.register()
logging.info('Auto-accepting TOS: %s', regr.terms_of_service)
acme.agree_to_tos(regr)
logging.debug(regr)
authzr = acme.request_challenges(
identifier=messages.Identifier(typ=messages.IDENTIFIER_FQDN, value=DOMAIN))
logging.debug(authzr)
authzr, authzr_response = acme.poll(authzr)
csr = OpenSSL.crypto.load_certificate_request(
OpenSSL.crypto.FILETYPE_ASN1, pkg_resources.resource_string(
'acme', os.path.join('testdata', 'csr.der')))
try:
acme.request_issuance(jose.util.ComparableX509(csr), (authzr,))
except messages.Error as error:
print ("This script is doomed to fail as no authorization "
"challenges are ever solved. Error from server: {0}".format(error))