Now that I released my
poser framework, I also refactored "remusock" to use it (and drop a lot of built-in code). Actually, most of the code that's now in "poser" started its life with "remusock"
As "poser" already has TLS support for both servers and clients available, this would give the chance to offer encrypted TLS connections in "remusock" as well. Of course, just adding encryption won't add much value, but when some authn/authz is added as well, this would allow using "remusock" across untrusted networks, making it much more useful in general.
Now, I'm thinking about how to implement authn/authz.
The by far easiest solution seems to rely on (X.509) client certificates (could require them to be issued by some private CA, and maybe additionally have a list of allowed subject names ...). On the plus side, X.509 is proven and secure. On the "dev plus side" (for me
), there would be no need to change the protocol, authentication would take place in the TLS handshake before the application protocol even starts
On the other hand, lots of people seem to struggle with
using (and maintaining) certificates, let alone setting up their own CA.
Asking for opinions here, do you think client certificate auth is a good idea? Or should I design something more "simple", like pre-shared keys or user/password credentials (with their drawbacks regarding security)?