| Title: Nginx and acme-client on OpenBSD | |
| Author: Solène | |
| Date: 04 July 2019 | |
| Tags: openbsd nginx automation | |
| Description: | |
| I write this blog post as I spent too much time setting up nginx and | |
| SSL on OpenBSD with acme-client, due to nginx being chrooted and not | |
| stripping path and not doing it easily. | |
| First, you need to set up **/etc/acme-client.conf** correctly. Here is | |
| mine for the domain ports.perso.pw: | |
| authority letsencrypt { | |
| api url "https://acme-v02.api.letsencrypt.org/directory" | |
| account key "/etc/acme/letsencrypt-privkey.pem" | |
| } | |
| domain key "/etc/ssl/private/ports.key" | |
| domain full chain certificate | |
| "/etc/ssl/ports.fullchain.pem" | |
| sign with letsencrypt | |
| } | |
| **This example is for OpenBSD 6.6 (which is current when I write this) | |
| because of Let's encrypt API URL. If you are running 6.5 or 6.4, | |
| replace v02 by v01 in the api url** | |
| Then, you have to configure nginx this way, the most important part in | |
| the following configuration file is the location block handling | |
| acme-challenge request. Remember that nginx is in chroot /var/www so | |
| the path to acme directory is `acme`. | |
| http { | |
| include mime.types; | |
| default_type application/octet-stream; | |
| index index.html index.htm; | |
| keepalive_timeout 65; | |
| server_tokens off; | |
| server unix:tmp/plackup.sock; | |
| } | |
| listen 80; | |
| server_name ports.perso.pw; | |
| error_log logs/error.log info; | |
| rewrite ^/.well-known/acme-challenge/(.*) /$1 break; | |
| root /acme; | |
| } | |
| return 301 https://$server_name$request_uri; | |
| } | |
| } | |
| listen 443 ssl; | |
| server_name ports.perso.pw; | |
| access_log logs/access.log; | |
| error_log logs_error.log info; | |
| root /htdocs/; | |
| ssl_certificate_key /etc/ssl/private/ports.key; | |
| ssl_protocols TLSv1.1 TLSv1.2; | |
| ssl_prefer_server_ciphers on; | |
| ssl_ciphers | |
| "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; | |
| [... stuff removed ...] | |
| } | |
| That's all! I wish I could have find that on the Internet so I share | |
| it here. |