@jwildeboer
This is great content! Good job!
I've been running my StepCA for a while (even with private/not exposed DNS), so I would like to add a couple of points for you to think about:
a) I'm a little paranoid, so I made sure to tell the CA that it can only issue certs to specific domains (not even the sub-domains). Like this: step ca policy authority x509 allow dns "*.<your-dns-zone>". If you want a sub-domain, you need to add *.sub.zone. (this can be edited directly in ca.json as well).
b) One problem that hits me every once in a while is about devices or services that do not accept private CAs. Either you have to jump through hoops to make them work or, worse, some of them to not work at all. It's rare, but when it happens it's frustrating.
I've been using my CA with NGINX and Caddy for a while, but last week I got it working with CertManager in a Kubernetes cluster. I just need to find time to blog about it. 😄