-
-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #42 from byjg/issue/41
Issue #41
- Loading branch information
Showing
60 changed files
with
1,301 additions
and
612 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,13 +5,13 @@ services: | |
image: byjg/easy-haproxy:4.3.1-rc1 | ||
volumes: | ||
- /var/run/docker.sock:/var/run/docker.sock | ||
- certs_letsencrypt:/certs/letsencrypt | ||
- certs_certbot:/certs/certbot | ||
- certs_haproxy:/certs/haproxy | ||
|
||
environment: | ||
EASYHAPROXY_DISCOVER: docker | ||
EASYHAPROXY_LABEL_PREFIX: easyhaproxy | ||
EASYHAPROXY_LETSENCRYPT_EMAIL: [email protected] | ||
EASYHAPROXY_CERTBOT_EMAIL: [email protected] | ||
EASYHAPROXY_SSL_MODE: "default" | ||
HAPROXY_CUSTOMERRORS: "true" | ||
HAPROXY_USERNAME: admin | ||
|
@@ -27,7 +27,7 @@ services: | |
- easyhaproxy | ||
|
||
volumes: | ||
certs_letsencrypt: | ||
certs_certbot: | ||
external: true | ||
certs_haproxy: | ||
external: true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# SSL - Automatic Certificate Management Environment (ACME) | ||
|
||
The Automatic Certificate Management Environment (ACME) protocol | ||
allow automating interactions between certificate authorities and their users' servers, | ||
allowing the automated deployment of public key infrastructure. | ||
|
||
Most of the issuers offers Automatic Issuing free of cost. | ||
|
||
## Environment Variables | ||
|
||
To enable the ACME protocol we need to enable Certbot in EasyHAProxy by setting up to 4 environment variables: | ||
|
||
| Environment Variable | Required? | Description | | ||
|----------------------------------|-----------|----------------------------------------------------------------------------------------------------------------------------------| | ||
| EASYHAPROXY_CERTBOT_EMAIL | YES | Your email in the certificate authority. | | ||
| EASYHAPROXY_CERTBOT_AUTOCONFIG | - | Will use pre-sets for your Certificate Authority (CA). See table below. | | ||
| EASYHAPROXY_CERTBOT_SERVER | - | The ACME Endpoint of your certificate authority. If you use AUTOCONFIG, it is set automatically. See table below. | | ||
| EASYHAPROXY_CERTBOT_EAB_KID | - | External Account Binding (EAB) Key Identifier (KID) provided by your certificate authority. Some CA require it. See table below. | | ||
| EASYHAPROXY_CERTBOT_EAB_HMAC_KEY | - | External Account Binding (EAB) HMAC Key provided by your certificate authority. Some CA require it. See table below. | | ||
| EASYHAPROXY_CERTBOT_RETRY_COUNT | - | Wait 'n' requests before retrying issue invalid requests. Default 60. | | ||
|
||
## Auto Config Certificate Authority (CA) | ||
|
||
Here are detailed instructions per Certificate Authority (CA). If anyone is missing, please let's know. | ||
|
||
| CA | Auto Config | Free? | Account Required? | EAB KID? | EAB HMAC Key? | More Info | | ||
|----------------------|------------------|-------|--------------------|----------|---------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| Let's Encrypt | - | Yes | No | No | No | - | | ||
| Let's Encrypt (Test) | letsencrypt_test | Yes | No | No | No | - | | ||
| ZeroSSL | zerossl | Yes | No | No | No | [Link](https://zerossl.com/documentation/acme/) | | ||
| BuyPass | buypass | Yes | No | No | No | [Link](https://community.buypass.com/t/63d4ay/buypass-go-ssl-endpoints-updated-14-05-2020) | | ||
| BuyPass (test) | buypass_test | Yes | No | No | No | [Link](https://community.buypass.com/t/63d4ay/buypass-go-ssl-endpoints-updated-14-05-2020) | | ||
| Google | google | Yes | Yes | Yes | Yes | [Link](https://cloud.google.com/blog/products/identity-security/automate-public-certificate-lifecycle-management-via--acme-client-api) | | ||
| Google Test | google_test | Yes | Yes | Yes | Yes | [Link](https://cloud.google.com/blog/products/identity-security/automate-public-certificate-lifecycle-management-via--acme-client-api) | | ||
| SSLCOM RCA | sslcom_rca | Trial | EAB Keys by email. | Yes | Yes | [Link](https://www.ssl.com/blogs/sslcom-supports-acme-protocol-ssl-tls-certificate-automation/) | | ||
| SSLCOM ECC | sslcom_ecc | Trial | EAB Keys by email. | Yes | Yes | [Link](https://www.ssl.com/blogs/sslcom-supports-acme-protocol-ssl-tls-certificate-automation/) | | ||
| Digicert | - | No | Yes | Yes | Yes | [Link](https://docs.digicert.com/en/certcentral/certificate-tools/certificate-lifecycle-automation-guides/use-a-third-party-acme-client-for-host-automations.html) | | ||
| Entrust | - | No | Yes | Yes | Yes | [Link](https://www.entrust.com/knowledgebase/ssl/how-to-use-acme-to-install-ssl-tls-certificates-in-entrust-certificate-services-apache) | | ||
| Sectigo | - | No | Yes | Yes | Yes | [Link](https://www.sectigo.com/resource-library/sectigos-acme-automation) | | ||
|
||
This configuration is global. After set up ACME properly, is necessary enable for each domain the certificate request. | ||
|
||
To do that add the label: `easyhaproxy.<definition>.certbot=true`. See the method of installation you are using to learn how to set up properly. | ||
|
||
## Example | ||
|
||
### Setting up EasyHAProxy | ||
|
||
Run the EasyHAProxy container: | ||
|
||
```bash | ||
docker run \ | ||
... \ | ||
-e EASYHAPROXY_CERTBOT_AUTOCONFIG=zerossl \ | ||
-e [email protected] \ | ||
-p 80:80 \ | ||
-p 443:443 \ | ||
-v /path/to/guest/certbot/certs:/certs/certbot \ | ||
... \ | ||
byjg/easy-haproxy | ||
``` | ||
|
||
Notes: | ||
|
||
- The `EASYHAPROXY_CERTBOT_AUTOCONFIG` is not required for Let's Encrypt. In this example, the certificate will be issued by ZeroSSL. | ||
- If you don't setup `EASYHAPROXY_CERTBOT_EMAIL` environment variable, EasyHAProxy will fail silently and **will not request** a certificate. | ||
- The ports 80 and 443 needs to accessible through the internet as [Let's Encrypt requirement](https://letsencrypt.org/docs/allow-port-80/) | ||
|
||
In order to avoid several certificate issuing, | ||
**It is required you to persist the container folder `/certs/certbot` outside the container.** | ||
You cannot delete or change it contents. | ||
If you do not persist, or change/delete the contents, Issue a certificate might not work properly and hit rate limit. | ||
|
||
If you are using Let's Encrypt, be aware of it rate limits: | ||
|
||
- https://letsencrypt.org/docs/duplicate-certificate-limit/ | ||
- https://letsencrypt.org/docs/rate-limits/ | ||
|
||
|
||
## Setting up your container to use the ACME CA | ||
|
||
```bash | ||
docker run \ | ||
... \ | ||
--label easyhaproxy.express.port=80 \ | ||
--label easyhaproxy.express.localport=3000 \ | ||
--label easyhaproxy.express.host=example.org \ | ||
--label easyhaproxy.express.certbot=true \ | ||
... \ | ||
some/myimage | ||
``` | ||
|
||
Requirements: | ||
|
||
- Your container **must** listen to port 80. The CA will not issue the certificate if `easyhaproxy.<definition>.port` is in another port, and EasyHAProxy will fail silently. | ||
- You cannot set port 443 for the container with the Letsencrypt because EasyHAProxy will create this port automatically once the certificate is issued. | ||
|
||
---- | ||
[Open source ByJG](http://opensource.byjg.com) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.