I am creating a peer to peer program that runs on client computers connecting to other clients. I will be using Boost.Asio. The only options that I am aware of for securing these connections is using TLS, but it is not practical for every client to have their own certificate and self signed certificates are apparently insecure. What other cryptographic technologies are available that do not require registration with a central authority? Especially ones that would be easy to integrate with these technologies, i.e. there are programmatic implementations available.
Also, I was not sure whether to post this on here or on crypto.stackexchange.com, but crypto seemed more focused on implementing and designing cryptography than utilising it. If I have posted to the wrong one please tell me and I will happily move this question. Thanks.