Solved.
Solved for both Windows and Linux (Debian, Arch, Fedora). I might have unlikely solved this of OSX as well, but I am not buying Apply hardware just to test it.
What my solution does is check for certificates created by the project during a build step. If the certificates don't exist it creates them, installs them in the OS, and also installs them in the browser. Installation in the browsers is required in Linux and only for FireFox in Windows. These are cert chains containing a self-signed root, intermediary CA, and a local domain cert.
I have these certs configured to work with my own domains so that I can connect to a subdomain addressed to a loopback IP and the cert recognizes that domain, but the domain "localhost" works as well. Sometimes its nice to access a real domain to avoid any restrictions imposed upon accessing address "localhost". You just have to change the domains at the bottom of your OpenSSL option files.
Here is how I solved it with vanilla TypeScript in Node.js (also requires locally installed OpenSSL):
* OpenSSL option file 1 - https://github.com/prettydiff/share-file-systems/blob/master...
* OpenSSL option file 2 - https://github.com/prettydiff/share-file-systems/blob/master...
* Certificate library - https://github.com/prettydiff/share-file-systems/blob/master...
* Certificate interface from build tool - https://github.com/prettydiff/share-file-systems/blob/master...
* Certificate installation - https://github.com/prettydiff/share-file-systems/blob/master...
If you have any questions just open a Github issue on the project.