
3 changed files with 0 additions and 87 deletions
@ -1,87 +0,0 @@ |
|||
# use dehydrated to automatically generate and renew Let's Encrypt certificates for HAproxy |
|||
|
|||
## Install |
|||
|
|||
install `curl`: |
|||
``` |
|||
apt install curl |
|||
``` |
|||
download the dehydrated script to `/usr/local/bin`: |
|||
``` |
|||
cd /usr/local/bin/ |
|||
wget https://raw.githubusercontent.com/dehydrated-io/dehydrated/master/dehydrated |
|||
chmod +x dehydrated |
|||
``` |
|||
|
|||
## Configure HAproxy HTTP |
|||
|
|||
we need to configure haproxy to reroute Let's Encrypt requests to the certbot server. The beginning of your web frontend should look like: |
|||
``` |
|||
frontend www |
|||
bind *:80 |
|||
option forwardfor |
|||
|
|||
# Reroute certbot requests to certbot |
|||
use_backend certbot if { path_beg /.well-known/acme-challenge/ } |
|||
|
|||
... |
|||
``` |
|||
and also add a backend: |
|||
``` |
|||
backend certbot |
|||
server certbot localhost:8888 |
|||
``` |
|||
|
|||
## Configure Certbot |
|||
|
|||
We also want to configure Certbot so we can easily use it for creating/renewing certificates for HAproxy. Edit the file `/etc/letsencrypt/cli.ini` and add the lines: |
|||
``` |
|||
standalone |
|||
# tls-sni challenge is deprecated |
|||
preferred-challenges = http |
|||
http-01-port = 8888 |
|||
deploy-hook = /etc/letsencrypt/deploy-hook.sh |
|||
``` |
|||
We also need to add the deploy hook script that we referenced in the config file, at `/etc/letsencrypt/deploy-hook.sh`. The contents of the script should be: |
|||
``` |
|||
#!/bin/sh |
|||
|
|||
mkdir -p /etc/haproxy/certs |
|||
base=$(basename $RENEWED_LINEAGE) |
|||
cat $RENEWED_LINEAGE/fullchain.pem $RENEWED_LINEAGE/privkey.pem > /etc/haproxy/certs/$base.pem |
|||
#etckeeper commit "got new Let's Encrypt certificate for $base" |
|||
service haproxy reload |
|||
``` |
|||
(Uncomment the `etckeeper` line if you are using etckeeper to store your configuration). And don't forget to make the script executable: |
|||
``` |
|||
chmod +x /etc/letsencrypt/deploy-hook.sh |
|||
``` |
|||
|
|||
With this configuration, you should be able to run certbot to obtain a certificate. The cron job that is automatically set up when you install certbot will also work correctly with this configuration. |
|||
|
|||
## Get Certificate |
|||
|
|||
Run Certbot to get a certificate: |
|||
``` |
|||
certbot certonly |
|||
``` |
|||
After successfully acquiring a certificate, the deploy hook will automatically put the combined certificate in `/etc/haproxy/certs/` for you. |
|||
|
|||
## Configure HAproxy HTTPs |
|||
|
|||
Now that you have HTTPs working, you can configure HAproxy for HTTPs. The beginning of your web frontend should now look like: |
|||
``` |
|||
frontend www |
|||
bind *:80 |
|||
bind *:443 ssl crt /etc/haproxy/certs/ alpn h2,http/1.1 |
|||
option forwardfor |
|||
http-request set-header X-Forwarded-Proto https if { ssl_fc } |
|||
|
|||
# Reroute letsencrypt requests to certbot |
|||
use_backend certbot if { path_beg /.well-known/acme-challenge/ } |
|||
|
|||
# Reroute HTTP to HTTPs |
|||
http-request redirect scheme https if !{ ssl_fc } |
|||
|
|||
... |
|||
``` |
Loading…
Reference in new issue