-
Notifications
You must be signed in to change notification settings - Fork 86
docs: add Let's Encrypt as recommended SSL provider for evonodes #567
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: 23.0.0
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -597,22 +597,38 @@ Prerequisites | |
| - 9999/tcp | ||
| - 443/tcp | ||
| - 26656/tcp | ||
| - 80/tcp (if you are going to use ZeroSSL) | ||
| - 80/tcp (required for Let's Encrypt or ZeroSSL certificate validation) | ||
| - Backup of any existing Dash Core and dashmate configuration data, including private keys | ||
| - `ZeroSSL API access key <https://app.zerossl.com/developer>`_ or SSL certificate for the public | ||
| IPv4 address (not DNS name) | ||
| - An email address for Let's Encrypt certificate registration, or a `ZeroSSL API access key | ||
| <https://app.zerossl.com/developer>`_, or an SSL certificate for the public IPv4 address (not DNS | ||
| name) | ||
|
|
||
| .. _evonode-ssl-cert: | ||
|
|
||
| SSL certificates | ||
| ---------------- | ||
|
|
||
| There are two ways to get SSL certificates: | ||
| An SSL certificate is required for your evonode to communicate securely with the Dash Platform | ||
| network. There are three ways to get SSL certificates: | ||
|
|
||
| 1. Register for the ZeroSSL service and set your API key. Since ZeroSSL provides an API, dashmate | ||
| can update your certificates automatically. The free plan only provides 3 free certificates (or 3 | ||
| renewals of 1 certificate). Other plans require paying with a credit card. You can get an API key | ||
| for dashmate by completing the following steps: | ||
| 1. **Let's Encrypt (recommended)**. Let's Encrypt is a free, automated certificate authority that | ||
| provides SSL certificates at no cost and with no account registration required. Dashmate has | ||
| built-in support for obtaining and automatically renewing Let's Encrypt certificates. All you need | ||
| is an email address for certificate expiry notifications. | ||
|
|
||
| During ``dashmate setup``, select **Let's Encrypt** as the SSL provider and enter your email | ||
| address when prompted. Dashmate will handle the rest, including automatic renewal before | ||
| certificates expire. | ||
|
|
||
| .. note:: | ||
|
|
||
| Let's Encrypt requires port 80/tcp to be open for the ACME HTTP-01 challenge used to validate | ||
| your server's IP address during certificate issuance and renewal. | ||
|
|
||
|
Comment on lines
+614
to
+627
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Search for ACME profile, shortlived, or letsEncrypt-related terms in dashmate source
rg -i --type=js -n -C3 "shortlived\|acme.*profile\|letsEncrypt\|lets.encrypt" \
-g '!node_modules' -g '!dist'Repository: dashpay/docs Length of output: 38 🏁 Script executed: # Also check for certificate-related configurations
rg -i --type=js -n "certificate\|cert\|acme" -g '!node_modules' -g '!dist' | head -100Repository: dashpay/docs Length of output: 38 🏁 Script executed: # Look for dashmate configuration and package info
fd -type f -name "package.json" -o -name "*acme*" -o -name "*certificate*" | head -20Repository: dashpay/docs Length of output: 226 🏁 Script executed: # Search for any dashmate documentation or configuration in this docs repo
rg -i "dashmate" -n -A 5 -B 5 | head -150Repository: dashpay/docs Length of output: 11283 🏁 Script executed: # Look for any setup or configuration files mentioning ACME
rg -i "acme\|shortlived" -nRepository: dashpay/docs Length of output: 38 🌐 Web query:
💡 Result:
Sources: Clarify the certificate validity period and renewal requirements for Let's Encrypt IP-address certificates. The documentation at lines 614-627 describes automatic certificate renewal without disclosing that Let's Encrypt IP-address certificates are valid for only ~160 hours (approximately 6 days), compared to the standard 90-day validity for domain-name certificates. These short-lived certificates require the ACME client to explicitly request the Since the snippet confirms these are IP-address certificates (mentioning "your server's IP address" validation), users need to understand that continuous automated renewal is not optional—it's operationally critical. This is a significant operational difference from standard Let's Encrypt usage that should be clearly disclosed to node operators. Please confirm whether dashmate's bundled ACME client supports and requests the 🤖 Prompt for AI Agents
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good research on the short-lived certificate validity. I checked dashmate's implementation and can confirm: Dashmate already handles this correctly. In That said, adding a brief note about the ~6-day validity for IP-address certificates would be helpful for node operators who want to understand why renewal happens so frequently. Something like:
This is informational rather than a blocker — the current text ("Dashmate will handle the rest, including automatic renewal") is technically accurate. |
||
| 2. **ZeroSSL**. ZeroSSL provides an API that allows dashmate to obtain and update your certificates | ||
| automatically. The free plan provides 3 free certificates (or 3 renewals of 1 certificate). Other | ||
| plans require paying with a credit card. You can get an API key for dashmate by completing the | ||
| following steps: | ||
|
|
||
| - Register on `https://zerossl.com/ <https://zerossl.com/>`_. *We recommend not using your | ||
| personal email address.* | ||
|
|
@@ -624,14 +640,15 @@ There are two ways to get SSL certificates: | |
|
|
||
| ZeroSSL Developer tab showing the API key | ||
|
|
||
| 2. Obtain SSL certificates for your IP address using any available provider and upload the | ||
| certificate files to your server. `SSL Dragon <https://www.ssldragon.com/>`_ and `SuperbitHost | ||
| 3. **Manual certificate upload**. Obtain SSL certificates for your IP address using any available | ||
| provider and upload the certificate files to your server. `SSL Dragon | ||
| <https://www.ssldragon.com/>`_ and `SuperbitHost | ||
| <https://www.superbithost.com/ssl-certificates/>`_ are two options that accept cryptocurrency. | ||
|
|
||
| Please make sure that the certificate chain file contains your server certificate at the top and | ||
| intermediate/root certificates if present. If a bundle file is present, you need to concatenate it | ||
| with the certificate file:: | ||
|
|
||
| cat certificate.crt bundle.crt > bundle.crt | ||
|
Comment on lines
648
to
652
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pre-existing data-corruption bug in the The shell opens Although this line was not introduced by this PR, it falls within the restructured option-3 section that was touched here, making this a good moment to fix it. 🐛 Proposed fix- cat certificate.crt bundle.crt > bundle.crt
+ cat certificate.crt bundle.crt > chain.crtThen reference - cat certificate.crt bundle.crt > bundle.crt
+ cat certificate.crt bundle.crt > bundle.crt.tmp && mv bundle.crt.tmp bundle.crt🤖 Prompt for AI Agents
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Valid bug — However, this is a pre-existing issue not introduced by this PR (the line existed before in the original option 2 section). While it's worth fixing, it should ideally be addressed in a separate commit or PR to keep the scope clean. The suggested fix of writing to a temp file and renaming is the safest approach:
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Would you like me to open a GitHub issue to track this bug as a follow-up? I can document the problem and the recommended fix ( |
||
|
|
||
| Verify the validity of the private key and certificate chain by running these commands:: | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.
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.
"certificate registration" conflicts with the "no account registration" claim in the body.
The prerequisite uses "Let's Encrypt certificate registration," but lines 615–616 explicitly state "no account registration required" and clarify the email is for "certificate expiry notifications." The two phrases are contradictory from a reader's perspective.
✏️ Proposed fix
🤖 Prompt for AI Agents
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.
Valid catch. The wording "certificate registration" in the prerequisite conflicts with "no account registration required" in the body. The suggested fix is correct — changing to "certificate expiry notifications" makes the prerequisite consistent with the description below.
@ktechmidas this is a quick one-liner fix if you want to update it.
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.