Yeah listen, the more I look at this, the less sense it makes. It’s pretty simple:
I understand the server running on http only has the possibility in mind that there is a reverse proxy that terminates TLS. That’s fine. Running the server in plain http I’m having problems because the identifying credentials are transfered in plain text, visible for anyone that can monitor the network traffic.
Running something like this inside a DC where, in theory, no third party has access to the server or network may be fine as well, but the problem you’re trying to solve here, I don’t see it.
The only way to revoke acces in an X.509 environment is by revoking the client’s certificate unless you use some other means to identify the client, which in turn renders X.509 client authentication useless.
And using a CRL, even an incremental one, requires the server and the client to periodically fetch this file. Even with one minute intervals, there’s a one minute window were a compromised client can acccess the services and cause damage.
Also it seems that your stateless server neither creates a log of created certificates, for traceability, nor a CRL that it offers via HTTP. So w/o CRL you’re handing out certificates that you have zero control over.
I don’t know if that’s what you want, not even in a closed environment.
Everything you do, can be done with the help of a tab separated text file:
Enabled UUID
1 76810c3a-ffbd-4f8b-b836-a14e134b6377
and then the clients just set a HTTP-Header with their UUID.
The thing here is: You're not just not solving a problem, you're creating ten new ones.