For the archives: With the help of Florian and Ian we managed to find the error in the setup: One of the alternative names in acme-client.conf had no A record in DNS anymore (it was removed a few days prior).
acme-client will fail in such a case and return "status": "invalid" in the output of acme-client -vv. After removing the entry from acme-client.conf everything works as expected (with the "EOF without close" warning which is unrelated). Thanks to everybody who helped! Daniel >>> > Today acme-client renewed all but 2 of my domains; the two that have >>> > "alternative names" in the certificates. I cannot get it to renew >>> > those two. This is on amd64 on 6.6-current, updated today. >>> >>> I can reproduce this on amd64 current, as well as on 6.6. >>> >>> Same error and and very similar configuration based on the one in >>> /etc/examples. >> >> you mean renewing fails for you with alternative names or you mean you >> see tls_close: EOF without close notify? I think everybody sees that. >> It started to show up some time ago. I think let's encrypt changed >> something on the server. > > Sorry for not being more clear - I was not aware of the EOF without > close warning and had not seen this on the logs before. I thought this > was related to my renewal error. > >> In any case, I just force-renewed a cert with alt names and it just >> worked. > > I can confirm it works on stock 6.6 as expected (with the EOF warning), > however I still cannot get it to work on a -current amd64 web server. > >> please run acme-client with -vv to see what's going on over the >> network if you have renew problems. > > Here it is (sensitive parts replaced with <placeholder>): > > photon# acme-client -vv <domain>.com > acme-client: acme-client: /etc/ssl/www.<domain>.com.crt: certificate > renewable: 17 days left > acme-client: /etc/ssl/private/www.<domain>.com.key: loaded domain key > /etc/acme/letsencrypt-privkey.pem: loaded account key > acme-client: https://acme-v02.api.letsencrypt.org/directory: directories > acme-client: acme-v02.api.letsencrypt.org: DNS: 172.65.32.248 > acme-client: transfer buffer: [{ "4-vjXo89exY": > "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417", > "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change", "meta": > { "caaIdentities": [ "letsencrypt.org" ], "termsOfService": > "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf", > "website": "https://letsencrypt.org" }, "newAccount": > "https://acme-v02.api.letsencrypt.org/acme/new-acct", "newNonce": > "https://acme-v02.api.letsencrypt.org/acme/new-nonce", "newOrder": > "https://acme-v02.api.letsencrypt.org/acme/new-order", "revokeCert": > "https://acme-v02.api > .letsencrypt.org/acme/revoke-cert" }] (658 bytes) > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "key": { "kty": "RSA", "n":"<RSAkey>", "e": > "AQAB" }, "contact": [], "initialIp": "<ipaddress>","createdAt": > "2018-09-10T00:42:09Z", "status": "valid" }] (857 bytes) > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "status": "pending", "expires": > "2019-10-30T11:21:09.947891596Z", "identifiers": [ { "type": "dns", "value": > "<domain>.com" }, { "type": "dns", "value": "mail.<domain>.com" }, { "type": > "dns", "value": "photon.<domain>.com" }, { "type": "dns", "value": > "www.<domain>.com" } ], "authorizations": [ > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372032", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372034", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372035", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/904391026" ], "finalize": > "https://acme-v02.api.letsencrypt.org/acme/finalize/41820606/1346625758" }] > (757 bytes) > acme-client: dochngreq: > https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372032 > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "identifier": { "type": "dns", "value": > "<domain>.com" }, "status": "valid", "expires": "2019-11-28T08:41:55Z", > "challenges": [ { "type": "http-01", "status": "valid", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372032/TlKsVA", > "token": "v0Hxmbjl_8FtlvG-pvOylQuH_8BUS73WVMMOiXfwtBg", "validationRecord": [ > { "url": > "http://<domain>.com/.well-known/acme-challenge/v0Hxmbjl_8FtlvG-pvOylQuH_8BUS73WVMMOiXfwtBg", > "hostname": "<domain>.com", "port": "80", "addressesResolved": [ > "<ipaddress>" ], "addressUsed": "<ipaddress>" } ] }, { "type": "dns-01", > "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372032/BC5eNQ", > "token": "v0Hxmbjl_8FtlvG-pvOylQuH_8BUS73WVMMOiXfwtBg" }, { "type": > "tls-alpn-01", "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372032/MNZeLQ", > "token": "v0Hxmbjl_8FtlvG-pvOylQuH_8BUS73WVMMOiXfwtBg" } ] }] (1131 bytes) > acme-client: challenge, token:v0Hxmbjl_8FtlvG-pvOylQuH_8BUS73WVMMOiXfwtBg, > uri:https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372032/TlKsVA,status: > 2 > acme-client: dochngreq: > https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372034 > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "identifier": { "type": "dns", "value": > "photon.<domain>.com" }, "status": "valid", "expires": > "2019-11-28T08:41:55Z", "challenges": [ { "type": "http-01", "status": > "valid", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372034/bcLkQg", > "token": "5px8fBxbUQ8BPzLpPF4cNPkt08wrV8Gr2lvHtHGboP4", "validationRecord": [ > { "url": > "http://photon.<domain>.com/.well-known/acme-challenge/5px8fBxbUQ8BPzLpPF4cNPkt08wrV8Gr2lvHtHGboP4", > "hostname": "photon.<domain>.com", "port": "80", "addressesResolved": [ > "<ipaddress>" ], "addressUsed": "<ipaddress>" } ] }, { "type": "dns-01", > "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372034/YhIiyw", > "token": "5px8fBxbUQ8BPzLpPF4cNPkt08wrV8Gr2lvHtHGboP4" }, { "type": > "tls-alpn-01", "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372034/k3zo0w", > "token": "5px8fBxbUQ8BPzLpPF4cNPkt08wrV8Gr2lvHtHGboP4" } ] }] (1152 bytes) > acme-client: challenge, token: 5px8fBxbUQ8BPzLpPF4cNPkt08wrV8Gr2lvHtHGboP4, > uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372034/bcLkQg, > status: 2 > acme-client: dochngreq: > https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372035 > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "identifier": { "type": "dns","value": > "www.<domain>.com" }, "status": "valid", "expires":"2019-11-28T08:41:55Z", > "challenges": [ { "type": "http-01", "status":"valid", > "url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372035/ymTSqQ","token": > "2nRGi8XjMa5hGaOFLpi4WdpT3wQwnDxxFu5nEgq-VdI","validationRecord": [ { > "url":"http://www.<domain>.com/.well-known/acme-challenge/2nRGi8XjMa5hGaOFLpi4WdpT3wQwnDxxFu5nEgq-VdI","hostname": > "www.<domain>.com", "port": "80", "addressesResolved": ["<ipaddress>" ], > "addressUsed": "<ipaddress>" } ] }, { "type": "dns-01", "status": "pending", > "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372035/dwzu_w", > "token": "2nRGi8XjMa5hGaOFLpi4WdpT3wQwnDxxFu5nEgq-VdI" }, { "type": > "tls-alpn-01", "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372035/5XvR4g", > "token": "2nRGi8XjMa5hGaOFLpi4WdpT3wQwnDxxFu5nEgq-VdI" } ] }] (1143 bytes) > acme-client: challenge, token: 2nRGi8XjMa5hGaOFLpi4WdpT3wQwnDxxFu5nEgq-VdI, > uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/888372035/ymTSqQ, > status: 2 > acme-client: dochngreq: > https://acme-v02.api.letsencrypt.org/acme/authz-v3/904391026 > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "identifier": { "type": "dns", "value": > "mail.<domain>.com" }, "status": "pending", "expires": > "2019-10-30T11:21:09Z", "challenges": [ { "type": "http-01", "status": > "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/-CjOUw", > "token": "W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU" }, { "type": "dns-01", > "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/NahRzw", > "token": "W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU" }, { "type": > "tls-alpn-01", "status": "pending", "url": > "https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/TlJQ0Q", > "token": "W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU" } ] }] (793 bytes) > acme-client: challenge, token: W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU, > uri: https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/-CjOUw, > status: 0 > acme-client: /var/www/acme/W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU: > created > acme-client: > https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/-CjOUw: challenge > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "type": "http-01", "status": "pending", > "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/904391026/-CjOUw", > "token": "W2VcDuv5jXJPOSIRgJ1qvzWXZW8KAJfSTiHTQfvgELU" }] (184 bytes) > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: acme-v02.api.letsencrypt.org: cached > acme-client: 172.65.32.248: tls_close: EOF without close notify > acme-client: transfer buffer: [{ "status": "invalid", "expires": > "2019-10-30T11:21:09Z", "identifiers": [ { "type": "dns", "value": > "<domain>.com" }, { "type": "dns", "value": "mail.<domain>.com" }, { "type": > "dns", "value": "photon.<domain>.com" }, { "type": "dns", "value": > "www.<domain>.com" } ], "authorizations": [ > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372032", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372034", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/888372035", > "https://acme-v02.api.letsencrypt.org/acme/authz-v3/904391026" ], "finalize": > "https://acme-v02.api.letsencrypt.org/acme/finalize/41820606/1346625758" }] > (747 bytes) > acme-client: order.status -1 > acme-client: bad exit: netproc(86194): 1 > > I verified that a file I put in > http://<domain>.com/.well-known/acme-challenge/ can be downloaded from > the server running httpd. > > /etc/acme-client.conf: > > # > # $OpenBSD: acme-client.conf,v 1.7 2018/04/13 08:24:38 ajacoutot Exp $ > # > > authority letsencrypt { > api url "https://acme-v02.api.letsencrypt.org/directory" > account key "/etc/acme/letsencrypt-privkey.pem" > } > > authority letsencrypt-staging { > api url "https://acme-staging-v02.api.letsencrypt.org/directory" > account key "/etc/acme/letsencrypt-staging-privkey.pem" > } > > domain <domain>.com { > alternative names { www.<domain>.com photon.<domain>.com > mail.<domain>.com } > domain key "/etc/ssl/private/www.<domain>.com.key" > domain certificate "/etc/ssl/www.<domain>.com.crt" > domain full chain certificate > "/etc/ssl/www.<domain>.com.fullchain.pem" > sign with letsencrypt > } > > dmesg: > > OpenBSD 6.6-current (GENERIC) #370: Tue Oct 22 11:50:58 MDT 2019 > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC > real mem = 2080227328 (1983MB) > avail mem = 2004627456 (1911MB) > mpath0 at root > scsibus0 at mpath0: 256 targets > mainbus0 at root > bios0 at mainbus0: SMBIOS rev. 2.8 @ 0xf68c0 (9 entries) > acpi0 at bios0: ACPI 1.0 > acpi0: sleep states S5 > acpi0: tables DSDT FACP APIC HPET > acpi0: wakeup devices > acpitimer0 at acpi0: 3579545 Hz, 24 bits > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat > cpu0 at mainbus0: apid 0 (boot processor) > cpu0: Intel Xeon Processor (Skylake, IBRS), 2100.28 MHz, 06-55-04 > cpu0: > FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,SSSE3,FMA3,CX16,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,HV,NXE,PAGE1GB,RDTSCP,LONG,LAHF,ABM,3DNOWP,FSGSBASE,BMI1,HLE,AVX2,SMEP,BMI2,ERMS,INVPCID,RTM,MPX,AVX512F,RDSEED,ADX,SMAP,CLWB,AVX512CD,IBRS,IBPB,ARAT,XSAVEOPT,XSAVEC,XGETBV1,MELTDOWN > cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 512KB > 64b/line 16-way L2 cache > cpu0: ITLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped > cpu0: DTLB 255 4KB entries direct-mapped, 255 4MB entries direct-mapped > cpu0: smt 0, core 0, package 0 > mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges > cpu0: apic clock running at 1030MHz > ioapic0 at mainbus0: apid 0 pa 0xfec00000, version 11, 24 pins > acpihpet0 at acpi0: 100000000 Hz > acpiprt0 at acpi0: bus 0 (PCI0) > acpicpu0 at acpi0: C1(@1 halt!) > "ACPI0006" at acpi0 not configured > acpipci0 at acpi0 PCI0: _OSC failed > acpicmos0 at acpi0 > "PNP0A06" at acpi0 not configured > "PNP0A06" at acpi0 not configured > "PNP0A06" at acpi0 not configured > "QEMU0002" at acpi0 not configured > "ACPI0010" at acpi0 not configured > cpu0: using Skylake AVX MDS workaround > pvbus0 at mainbus0: KVM > pvclock0 at pvbus0 > pci0 at mainbus0 bus 0 > pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02 > pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00 > pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel 0 > wired to compatibility, channel 1 wired to compatibility > pciide0: channel 0 disabled (no drives) > atapiscsi0 at pciide0 channel 1 drive 0 > scsibus1 at atapiscsi0: 2 targets > cd0 at scsibus1 targ 0 lun 0: <QEMU, QEMU DVD-ROM, 2.5+> removable > cd0(pciide0:1:0): using PIO mode 4, DMA mode 2 > uhci0 at pci0 dev 1 function 2 "Intel 82371SB USB" rev 0x01: apic 0 int 11 > piixpm0 at pci0 dev 1 function 3 "Intel 82371AB Power" rev 0x03: apic 0 int 9 > iic0 at piixpm0 > vga1 at pci0 dev 2 function 0 "Bochs VGA" rev 0x02 > wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) > wsdisplay0: screen 1-5 added (80x25, vt100 emulation) > virtio0 at pci0 dev 3 function 0 "Qumranet Virtio Network" rev 0x00 > vio0 at virtio0: address 96:00:00:10:0b:d6 > virtio0: msix shared > virtio1 at pci0 dev 4 function 0 "Qumranet Virtio SCSI" rev 0x00 > vioscsi0 at virtio1: qsize 128 > scsibus2 at vioscsi0: 255 targets > sd0 at scsibus2 targ 0 lun 0: <QEMU, QEMU HARDDISK, 2.5+> > sd0: 19532MB, 512 bytes/sector, 40001536 sectors, thin > virtio1: msix shared > virtio2 at pci0 dev 5 function 0 "Qumranet Virtio Memory Balloon" rev 0x00 > viomb0 at virtio2 > virtio2: apic 0 int 10 > virtio3 at pci0 dev 6 function 0 "Qumranet Virtio Console" rev 0x00 > virtio3: no matching child driver; not configured > isa0 at pcib0 > isadma0 at isa0 > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 > com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo > pckbc0 at isa0 port 0x60/5 irq 1 irq 12 > pckbd0 at pckbc0 (kbd slot) > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pms0 at pckbc0 (aux slot) > wsmouse0 at pms0 mux 0 > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > usb0 at uhci0: USB revision 1.0 > uhub0 at usb0 configuration 1 interface 0 "Intel UHCI root hub" rev 1.00/1.00 > addr 1 > uhidev0 at uhub0 port 1 configuration 1 interface 0 "QEMU QEMU USB Tablet" > rev 2.00/0.00 addr 2 > uhidev0: iclass 3/0 > ums0 at uhidev0: 3 buttons, Z dir > wsmouse1 at ums0 mux 0 > vscsi0 at root > scsibus3 at vscsi0: 256 targets > softraid0 at root > scsibus4 at softraid0: 256 targets > root on sd0a (c1d4c16f99e0d7bd.a) swap on sd0b dump on sd0b > fd0 at fdc0 drive 1: density unknown