!MthpOIxqJhTgrMNxDS:nixos.org

NixOS ACME / LetsEncrypt

92 Members
Another day, another cert renewal42 Servers

Load older messages


SenderMessageTime
2 Oct 2023
@os:matrix.flyingcircus.ioosnyx (he/him) Failed to fetch certificates. This may mean your DNS records are set up incorrectly. Selfsigned certs are in place and dependant services will still start. 12:47:15
@os:matrix.flyingcircus.ioosnyx (he/him) As nginx is reloaded even after failing scme service runs, the next retry of the service succeeds and after a few minutes, the certs are successfully validated. But the initial switch-to-configuration exits with a failure code. This is not very useful if you call taht switch as a part of a deployment script. 12:48:56
@os:matrix.flyingcircus.ioosnyx (he/him)

I mainly want to know whether

  1. folks here are aware of such issues
  2. this was a concious decision to live with a failing switch that repairs itself after a few minutes
  3. I am holding it wrong.
12:50:03
@os:matrix.flyingcircus.ioosnyx (he/him)The reload situation right now is <nginx.conf updated> -> <acme-selfsigned service run> -> <acme-renew run> -> <nginx-reload-config.service> -> <acme-finished target>12:52:15
@os:matrix.flyingcircus.ioosnyx (he/him)The easiest thing would be (as long as self-signed placeholder certs are used) if it was <nginx.conf updated> -> <acme-selfsigned service run> -> <nginx-reload-config.service> -> <acme-renew run> -> <nginx-reload-config.service> -> <acme-finished target>12:53:04
@os:matrix.flyingcircus.ioosnyx (he/him)Unfortunately, the same service cannot be run mutliple times within the dependency chain of a service (AFAIK). So I am thinking about duplicating the nginx reload service under 2 names to run it before and after an acme renewal. But maybe there's a better option or I am just holding thing the wrong end here.12:54:38
@os:matrix.flyingcircus.ioosnyx (he/him) * As nginx is reloaded even after failing acme service runs, the next retry of the service succeeds and after a few minutes, the certs are successfully validated. But the initial switch-to-configuration exits with a failure code. This is not very useful if you call taht switch as a part of a deployment script. 13:02:42
@os:matrix.flyingcircus.ioosnyx (he/him) * Unfortunately, the same service cannot be run mutliple times within the dependency chain of a service (AFAIK). So I am thinking about duplicating the nginx reload service under 2 names to run it before and after an acme renewal. But maybe there's a better option or I am just holding things the wrong end here.13:15:34
3 Oct 2023
@pederbs:pvv.ntnu.no@pederbs:pvv.ntnu.no changed their profile picture.21:04:38
4 Oct 2023
@pederbs:pvv.ntnu.no@pederbs:pvv.ntnu.no changed their profile picture.22:20:32
5 Oct 2023
@hexa:lossy.networkhexahttps://gist.github.com/mweinelt/3993fdc7be3caf81bcff1bc506f4492212:04:19
@hexa:lossy.networkhexa m1cr0man: 🙂 12:04:22
@m1cr0man:m1cr0man.comm1cr0mantenor_gif9132551967232721932.gif
Download tenor_gif9132551967232721932.gif
13:59:42
@m1cr0man:m1cr0man.comm1cr0man osnyx (he/him): I'm just seeing your message now. I personally use Apache and definitely have added new domains to running hosts. What I imagine has gone wrong here is that the Acme module assumes some mechanism will reload nginx when its own config changes irrespective of nginx-config-reload (aka switch-to-configuration will do it). That way the self signed certs get used initially then once renewal succeeds nginx-config-reload will reload it a second time, and http-01 validation succeeds. Really we just need to look at the order of operations during a rebuild and work from there. I would expect there to be a reload of nginx during the switch, after self signed, and before the renewal service 14:09:50
@m1cr0man:m1cr0man.comm1cr0manConfusing English gonna edit that 😅14:10:47
@m1cr0man:m1cr0man.comm1cr0man* osnyx (he/him): I'm just seeing your message now. I personally use Apache and definitely have added new domains to running hosts. What I imagine has gone wrong here is that the Acme module assumes some mechanism will reload nginx when its own config changes irrespective of nginx-config-reload (aka switch-to-configuration will do it). That way the self signed certs get used initially, http-01 validation happens, then once renewal succeeds nginx-config-reload will reload it a second time. Really we just need to look at the order of operations during a rebuild and work from there. I would expect there to be a reload of nginx during the switch, after self signed, and before the renewal service14:11:17
@os:matrix.flyingcircus.ioosnyx (he/him)

is that the Acme module assumes some mechanism will reload nginx when its own config changes irrespective of nginx-config-reload

But that cannot happen because the yet-to-be-generated certificate files are already referenced by the new config after switch, irrespectively whether the self-signed services have already run.

14:12:14
@os:matrix.flyingcircus.ioosnyx (he/him)I read (haven't tried myself) that nginx crashes when the config references nonexisting cert files. This is probably one of the main reasons for the existence of nginx-config-reload, as it has a condition gurad that checks for the existence of cert files.14:13:27
@m1cr0man:m1cr0man.comm1cr0manYes indeed. I think Apache silently fails here, and by the time a request is made selfsinged has run. I don't remember how nginx does it. Actually - bigger point. The test suite is passing 😛 how? I'm pretty sure I have a test for your exact scenario14:14:04
@os:matrix.flyingcircus.ioosnyx (he/him)I've done a workaround for our own fork of the nginx module now. As we plan to move towards upstream anyways, I'll probably want to get this fixed there as well and will soon-ish try to write a reproducer in the acme tests. Shouldn't be that hard.14:15:18
@os:matrix.flyingcircus.ioosnyx (he/him)
In reply to @m1cr0man:m1cr0man.com
Yes indeed. I think Apache silently fails here, and by the time a request is made selfsinged has run. I don't remember how nginx does it.


Actually - bigger point. The test suite is passing 😛 how? I'm pretty sure I have a test for your exact scenario
But yeah, I should have a look at ALL the tests.
14:15:59
@os:matrix.flyingcircus.ioosnyx (he/him)I mainly wanted to rule out a "Yes we know it's broken at switch time, but as long as it quickly converges to non-broken due to service retries we're fine with it".14:17:42
@m1cr0man:m1cr0man.comm1cr0manYeah no, it shouldn't be broken at all 😛14:24:03
@m1cr0man:m1cr0man.comm1cr0manAnd maybe it is broken and the test suite is sugar coating it with retries, but I don't have time to check right this moment14:24:39
@os:matrix.flyingcircus.ioosnyx (he/him)I'll investigate further, thanks.15:52:28
7 Oct 2023
@woobilicious:matrix.orgwoobilicious joined the room.06:00:43
12 Oct 2023
@ajs124:ajs124.deajs124 changed their profile picture.21:33:52
22 Oct 2023
@janik0:matrix.org@janik0:matrix.org joined the room.21:04:46
23 Oct 2023
@globin:toznenetl.chatglobin joined the room.09:52:39
@globin:toznenetl.chatglobin set a profile picture.14:27:53

Show newer messages


Back to Room ListRoom Version: 6