-
Notifications
You must be signed in to change notification settings - Fork 511
Add zero ssl to acme certificates #2392 #2458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Add zero ssl to acme certificates #2392 #2458
Conversation
Currently the API_KEY only version is not working properly. You must add EAB_KID AND EAB_HMAC_KEY ACME Certificate Authority Settings (New) Variable | Default | Options | Description ACME_SSL_CA_PROVIDER | "letsencrypt" | "letsencrypt", "zerossl" | Choose certificate authority ACME_ZEROSSL_API_KEY | "" | API key string | ZeroSSL API key for EAB setup ZeroSSL EAB Credentials (New - Alternative to API Key) Variable | Default | Options | Description ACME_ZEROSSL_EAB_KID | "" | EAB Kid string | Manual ZeroSSL EAB Kid ACME_ZEROSSL_EAB_HMAC_KEY | "" | EAB HMAC string | Manual ZeroSSL EAB HMAC Key HTTP Challenge Validation Settings (New) Variable | Default | Options | Description ACME_SKIP_HTTP_DNS_CHECK | "no" | "yes", "no" | Skip DNS A/AAAA record validation ACME_SKIP_CAA_CHECK | "no" | "yes", "no" | Skip CAA record validation ACME_HTTP_STRICT_IP_CHECK | "no" | "yes", "no" | Fail on server IP mismatches ACME_DNS_RETRY_COUNT | "2" | Number (0-10) | DNS lookup retry attempts For multisite mode (MULTISITE="yes"), prefix any variable with {SERVER}_: example.com_ACME_SSL_CA_PROVIDER="zerossl" example.com_ACME_ZEROSSL_API_KEY="your_api_key" example.com_ACME_ZEROSSL_EAB_KID="XYZ" example.com_ACME_ZEROSSL_EAB_HMAC_KEY="ABCABC" Features added: ACME_SKIP_HTTP_DNS_CHECK (default no) - DNS A/AAAA record validation ACME_SKIP_CAA_CHECK (default no) - CAA record validation (dig required) ACME_HTTP_STRICT_IP_CHECK (default no) - Fail on server IP mismatches - I really recommend to set it to yes to verify misconfigurations The ACME_SKIP_HTTP_DNS_CHECK = no means your instance will do a DNS lookup when using HTTP verification. If your DNS record is missing it will hard fail. So you don't loose one request using ACME because of a failed DNS record entry
- formating: apply 79-character line limits for code (120 max fallback) - documentation: aff documentation of functions - debugging: add debugging output when LOG_LEVEL: "DEBUG"
- formating: apply 79-character line limits for code (120 max fallback) - documentation: aff documentation of functions - debugging: add debugging output when LOG_LEVEL: "DEBUG"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Adds support for ZeroSSL alongside Let's Encrypt, enhances OCSP reporting, and improves UI debug logging and configuration.
- Introduces
ocsp_support
in certificate metadata and surfaces it in the DataTable UI - Expands context processor and main.js with detailed debug logging
- Updates documentation (README) to cover multiple CAs (Let’s Encrypt, ZeroSSL) and new config options
Reviewed Changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
src/common/core/letsencrypt/ui/hooks.py | Refactored context processor, added debug logs and column docs |
src/common/core/letsencrypt/ui/blueprints/static/js/main.js | Added debug logging, OCSP column, improved modal and AJAX flows |
src/common/core/letsencrypt/ui/blueprints/letsencrypt.py | Extended certificate retrieval with ocsp_support extraction |
src/common/core/letsencrypt/ui/actions.py | Added debug logging to cache extraction helper |
src/common/core/letsencrypt/jobs/letsencrypt.py | Added ZeroSSL CA selection import and debug logs to jobs |
src/common/core/letsencrypt/jobs/certbot-renew.py | Enhanced debug logging and env setup for renewal job |
src/common/core/letsencrypt/jobs/certbot-deploy.py | Extended debug logging and CA deployment flow |
src/common/core/letsencrypt/jobs/certbot-cleanup.py | Improved debug logging and standardized cleanup API calls |
src/common/core/letsencrypt/jobs/certbot-auth.py | Added debug logging and standardized challenge distribution |
src/common/core/letsencrypt/README.md | Expanded docs to include ZeroSSL, new settings, and examples |
Comments suppressed due to low confidence (2)
src/common/core/letsencrypt/ui/blueprints/letsencrypt.py:162
- The new
ocsp_support
field is populated by custom logic but isn’t covered by existing tests. Consider adding unit tests to verify OCSP URL detection and correct JSON output.
"ocsp_support": [],
src/common/core/letsencrypt/ui/hooks.py:58
- The
return None
appears misaligned with the surroundingif
block. Please adjust indentation so it's clearly inside theif path_excluded:
to improve readability and prevent accidental fall-through.
return None
} | ||
|
||
$("#errorModalLabel").text(title); | ||
$("#errorModalContent").html(message); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Injecting message
via html()
can expose the UI to XSS if the server response isn't fully sanitized. Consider using text()
or a sanitization library to safely render error messages.
$("#errorModalContent").html(message); | |
$("#errorModalContent").text(message); |
Copilot uses AI. Check for mistakes.
# Linux case | ||
LOGGER.info( | ||
f"Successfully sent API request to " | ||
f"{api.endpoint}/lets-encrypt/challenge" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The directory name lets-encrypt
is inconsistent with other code that uses letsencrypt
. This mismatch can lead to missing file errors. Please unify the folder name.
f"{api.endpoint}/lets-encrypt/challenge" | |
f"{api.endpoint}/letsencrypt/challenge" |
Copilot uses AI. Check for mistakes.
Injecting message via html() can expose the UI to XSS if the server response isn't fully sanitized. Consider using text() or a sanitization library to safely render error messages.
No description provided.