| ---------------------------------------- | |
| acme.sh shenanigans | |
| March 29th, 2018 | |
| ---------------------------------------- | |
| These are notes to myself on how I finally got acme.sh and nginx | |
| to play nice. | |
| Step 1: Generate a cert | |
| I'm using the namesilo api method here, so this part is simple. | |
| acme.sh --issue --dns dns_namesilo --dnssleep 900 -d tomasino.org | |
| -d www.tomasino.org -w /var/www | |
| Step 2: Create a place to put those certs | |
| This part was a struggle. Since acme.sh doesn't need root to run, | |
| so I wasn't sure where to go. Eventually I settled on creating | |
| a directory at /etc/nginx/acme.sh/domain/ and changed ownership to | |
| www-data:www-data. I'm a member of that group and nginx works with | |
| that too, so it should be good. | |
| Step 3: Install the certs | |
| This is poorly documented pretty much everywhere. It will pull the | |
| files from the .acme.sh directory in your home folder and put them | |
| wherever you define here. The reload command will run as root, so | |
| you don't need to specify sudo. | |
| acme.sh --install-cert -d tomasino.org --key-file | |
| /etc/nginx/acme.sh/tomasino.org/key.pem --cert-file | |
| /etc/nginx/acme.sh/tomasino.org/cert.pem --fullchain-file | |
| /etc/nginx/acme.sh/tomasino.org/fullchain.pem --reloadcmd | |
| "service nginx force-reload" | |
| Step 4: Set up the nginx configuration | |
| First, a server directive on port 80 that just redirects to the | |
| ssl version. | |
| Second, listen on 443, add a bunch of headers, set up ssl | |
| protocols, ciphers, link to the cert, key, and trusted cert | |
| (fullchain). Etc, etc... | |
| Step 5: Restart/Start nginx | |
| Hopefully it doesn't crap out on you like it did for me 5,000 | |
| times. |