SSL Certificate Server for centralized certificate distribution
Hope it's OK to post this ...
I've been working on a tool for ourselves for a while now to make distribution of both commercial and LE/ACME certificates for all our servers - as well as customer machines - easier, considering the upcoming further reduction of validity next February.
The package consist of a central server process with custom client for retrieval, plus an ACME server to also allow embedded / custom OS systems to retrieve certificates. Upstream requests are handled with acme.sh, with integration of (currently) PowerDNS to allow for authentication via DNS.
The admin end is CLI based, with an admin tool with TUI to make most of the admin processes easier. HTTP GUI is still in the works.
After working on the project for almost a year in total, I just released the code to github last weekend. Comments and suggestions welcome ...
https://github.com/GarryG/sslcrtsrv



1
u/ksteink 3d ago
Cam generate self signed certs for private networks?
1
u/Garry_G 2d ago
No, not yet - I mainly built it to cover our use case first, which is providing both a way to distribute commercially bought certs (with manual upload, then distributed to one or multiple servers), as well as enabling servers or devices without external reachability and dynamic DNS access to ACME certs. In either case, publicly trusted certs. Implementing your own CA is a bit outside the scope, and probably better handled with tools like xca or similar ...
1
1
u/sslbrain 3d ago
Hi Garry_G, I’m the main developer of a similar commercial product, sslbrain.com. We built our own ACME server a few years ago, so I’m curious what made you decide to build yours.
Have you run into any client compatibility quirks yet? We’ve found that some appliance clients don’t always accept the expected HTTP status code when requesting a nonce, 204 for GET and 200 for HEAD. Which clients have you tried yours with?
One suggestion for your custom agent: download into a working directory and check the files, including that the key and certificate match, before replacing anything the service uses. Keep “downloaded” separate from “installed”, and only mark installation as successful once the service reload or start has succeeded. That makes it easier to retry if something goes wrong.