When a web browser connects to a server and downloads an SSL certificate, a third-party trusted authority ensures that the client is talking to the host that it's looking for. If the host uses a self-signed certificate, the client has no way of knowing whether or not the certificate was really from the site that the client looking for.
But what if the client already has the certificate? Let's say the client is a desktop application that has a certificate installed along with the program. When the client attempts to connect to the server, the connection could be intercepted, but only the host with the right private key can prove its identity with the client.
It seems to me that the real usefulness of a trusted CA is when the certificate needs to be downloaded to facilitate the transaction. Assuming the client already has the certificate, is the CA really that important?
As far as I can tell, the only risk of using a self-signed certificate in this scenario is that if the server's private key were to be compromised, the client could unknowingly connect to the wrong host, and the the certificate can't be revoked.
Am I understanding any of this correctly? I admit that I really only understand SSL to a high-level, conceptual degree. If I'm missing some crucial piece of the puzzle, let me know. I did read through this question), but I don't think the answer to my question is there.