I am writing an application that occasionally needs to transmit larger messages to other servers on the internet without allowing people to snoop on the traffic. The normal way to handle this is to get an SSL certificate and use an encrypted connection for the communication channel.
However, trusted certs cost money and I don't want to require my users purchase one to transmit data.
Currently, I'm trying to decide if using self-signed certificates or PGP would be a better idea. If I use PGP I can just have the servers pass each others public key back and forth before they send the data.
What is the proper way to use free encryption for something like this?