Hi, Peter!

Well, when you run the step-ca as a non-root user (which is the default config for the package) you cannot use the default TLS port (443) - hence 8443 for the step-ca service.

I don't want to run step-ca as root user for a couple of reasons:
- deviate from the default package configuration
- introduce potential security risks

Don't get me wrong, a DNS service discovery sounds interesting, but it would put another layer of complexity on the configuration (compared to just add the port in a URL - which is part of an RFC: https://www.ietf.org/rfc/rfc1738.txt).

Best regards,
Ronald

On 6/4/23 16:04, Peter J. Philipp wrote:
On Sun, Jun 04, 2023 at 10:48:07AM +0200, Ronald Heggenberger wrote:
Hi!

(sorry for the second attempt of this message - our domain was not configured 
properly for mailing lists (dmarc reject) and I think the first attempt 
probably wasn't processed properly)

I am using step-ca to host my own acme provisioner (which is already working - 
an existing proxmox cluster can request and get x509 TLS certificates just 
fine), and as next step I wanted to use acme-client on OpenBSD servers, since 
it's deployed within the default installation. So I added it to 
/etc/acme-client.conf
```
[...]
     api url "https://use.some.domain.com:8443/acme/acme/directory";
[...]
```

But, when I run acme-client to actually get a certificate it terminates with 
the following error:
```
acme-client:https://use.some.domain.com:8443/acme/acme/directory: directories
acme-client: use.some.domain.com:8443: parse error: non-recoverable failure in 
name resolution
acme-client:https://use.some.domain.com:8443/acme/acme/directory: bad comm
acme-client: bad exit: netproc(21203): 1
acme-client: bad exit: dnsproc(35017): 1
```

I think the acme-client's interpretation of the host-name is wrong since it's 
trying to resolve the hostname including the used tcp port as well.

What I've tried so far:
Using a relayd configuration to forward port 443 to 8443 (this was not 
correctly working - just to prove a point) and changed the api url within the 
acme-client.conf to get rid of the port definition:
```
[...]
     api url "https://use.some.domain.com/acme/acme/directory";
[...]
```

When having the relayd setup waiting for connections and using acme-client I 
got the following error (which makes me even more confident that there is a 
problem in acme-client's handling of the hostname):
```
acme-client: 10.42.120.12: tls_write: handshake failed: unexpected EOF
acme-client: 10.42.120.12: tls_read: handshake failed: unexpected EOF
```

I don't want to setup relayd to handle my TLS properly on port 443, since I am 
totally fine having the step-ca service handling it over port 8443.

I am currently running OpenBSD 7.3, with default setup/configuration - nothing 
special.

How would one navigate this issue?

Thank you in advance and best regards
Ronald
BEGIN:VCARD
VERSION:4.0
N:Heggenberger;Ronald;;;
FN:Ronald Heggenberger
EMAIL;PREF=1:ronald.heggenber...@docoscope.com
END:VCARD
Hi Ronald,

I think the approach is wrong to add a port number into acme-client.  What
you perhaps need is something of the proposed internet standard for HTTPS RR's.

https://datatracker.ietf.org/doc/draft-ietf-dnsop-svcb-https/

It's not an STD or RFC yet but it soon will be, many DNS Server softwares
support it already.  As far as browser support I dunno :-(  Perhaps someone
else knows.

Best Regards,
-peter


Reply via email to