Avoid logging custom certificate secrets

This commit is contained in:
2026-09-19 14:45:11 -04:00
parent 59f14484ea
commit 53c2e87214
+36
View File
@@ -51,6 +51,15 @@ UPLOAD_DOMAIN_FRAGMENT = '''\t\tconst certificate = await internalCertificate.up
''' '''
CUSTOM_CERT_LOG_ANCHOR = (
'\t\tlogger.info("Writing Custom Certificate:", certificate);'
)
CUSTOM_CERT_LOG_FRAGMENT = (
'\t\tlogger.info(`Writing Custom Certificate: Cert #${certificate.id}`);'
)
SCHEDULER_PROVIDER_ANCHOR = '.andWhere("provider", "letsencrypt")\n' SCHEDULER_PROVIDER_ANCHOR = '.andWhere("provider", "letsencrypt")\n'
SCHEDULER_FILTER_ANCHOR = "if (!certificates?.length) {" SCHEDULER_FILTER_ANCHOR = "if (!certificates?.length) {"
@@ -306,6 +315,21 @@ def apply_certificate_js(source: str) -> str:
) )
log("cluster_cert_upload_domains=added") log("cluster_cert_upload_domains=added")
if CUSTOM_CERT_LOG_FRAGMENT in source:
log("cluster_cert_safe_logging=already-present")
elif CUSTOM_CERT_LOG_ANCHOR in source:
source = replace_exactly_once(
source,
CUSTOM_CERT_LOG_ANCHOR,
CUSTOM_CERT_LOG_FRAGMENT,
description="custom certificate safe logging",
)
log("cluster_cert_safe_logging=added")
else:
raise RuntimeError(
"Could not find native or patched custom certificate logging anchor"
)
if SCHEDULER_PROVIDER_ANCHOR in source: if SCHEDULER_PROVIDER_ANCHOR in source:
source = replace_exactly_once( source = replace_exactly_once(
source, source,
@@ -369,6 +393,17 @@ def apply_certificate_js(source: str) -> str:
return source return source
def verify_certificate_js(source: str) -> None: def verify_certificate_js(source: str) -> None:
require_fragment(
source,
CUSTOM_CERT_LOG_FRAGMENT,
description="safe custom certificate logging",
)
if CUSTOM_CERT_LOG_ANCHOR in source:
raise RuntimeError(
"Sensitive custom certificate object logging is still present"
)
require_fragment( require_fragment(
source, source,
UPLOAD_DOMAIN_FRAGMENT, UPLOAD_DOMAIN_FRAGMENT,
@@ -441,6 +476,7 @@ def verify_certificate_js(source: str) -> None:
description="cluster certificate database rollback verification", description="cluster certificate database rollback verification",
) )
log("cluster_cert_safe_logging_verification=passed")
log("cluster_cert_upload_domains_verification=passed") log("cluster_cert_upload_domains_verification=passed")
log("cluster_cert_scheduler_verification=passed") log("cluster_cert_scheduler_verification=passed")
log("cluster_cert_renew_helper_verification=passed") log("cluster_cert_renew_helper_verification=passed")