HTTPS setup issues

I’m trying to setup HTTPS on a server. For that I added this to my nixos configuration:

  security.acme = {
    acceptTerms = true;
    certs = {
      "example.com" = {
        email = "example@gmail.com";
        webroot = "/root/site";
      };
    };
  };

The directory /root/site is being served on port 80. When I run the nixos-rebuild test command, it fails with an output saying:

warning: the following units failed: acme-example.com.service
...
error presenting token: could not create required directories in webroot for HTTP challenge: mkdir /root/site: permission denied

How do I fix it? Also, does the acme agent run the challenge upon every renewal? Can I change the site configuration once the certificate has been issued?

You should set security.acme.group to a group capable of writing to /root/site. You can also manually create the /root/site/.well-known/acme-challenge directory and make it owned by the acme user:

sudo install -dm775 -o acme -g acme /root/site/.well-known/acme-challenge
1 Like

Additionally, you might consider if /root is the most appropriate directory for that…

2 Likes

This directory already exists and is owned by the acme user:

[root@server:~/site]# ls -ld .well-known/acme-challenge/
drwxr-xr-x 2 acme acme 4096 May  4 00:50 .well-known/acme-challenge/

[root@server:~/site]#

nixos-rebuild test fails with the same error.

What about sudo -u acme ls -ld /root/site/.well-known/acme-challenge/ (to check how the acme user views it)?

1 Like

Never mind. I generated a certificate manually using certbot.