For issuing client certificates you need to set up your own Certificate Authority (not super hard, for a minimal thing it's just some "openssl" commands).
However, macOS has its own framework for doing https calls, which most macOS applications use. It takes the place of OpenSSL/LibreSSL (etc) as used on Linux.
That framework does things differently, which turns out to make life difficult:
* It seems to require the certificate for your custom certificate authority to be in the macOS keychain.
So instead of having a custom CA that can be used by just your one application when doing https calls to your own remote server... you have to install your (root) CA certificate "system wide". From rough memory, that's a potential security problem as allows your custom CA to generate certs for any domain that macOS would now accept.
* It seems to also impose it's own arbitrary standards on certificates.
It looks like anything with an expiration date of more than a year is automatically rejected.
Which for certificates embedded in applications that aren't released at least once per year (eg ours at sqlitebrowser.org) just outright kills the whole fucking thing regardless of anything else we could do.
There's no real workaround for the kind of idiocy that requires applications more than a year old not being allowed to work. :( :( :(
---
That's my rough memory of this stuff anyway, it's been quite a while since I last looked at it. Hopefully the above isn't too far off base. :)