Take the 2-minute tour ×
Information Security Stack Exchange is a question and answer site for Information security professionals. It's 100% free, no registration required.

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.

share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

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.

This is pretty much it - but the fact that you can't revoke the certificate is a pretty big deal (one compromise means you have to give up on all current installations of your client - since you can no longer trust they haven't had their data compromised).

Having a CA also means you have a method of updating your certificate if you change URL, change business name, etc. and means you have a method of renewing it when it expires.

It reduces the amount of things you have to keep secure - you need to very closely guard those keys, back them up, etc. - with a 3rd party, you can have a certificate re-issued.

You also have the added benefit of being able to offer your client for download via https using the same certificate - meaning that cracked or hacked clients are marginally less likely.

share|improve this answer
    
Those are good points I hadn't thought of. I'm going to leave this open for a bit to see if anyone else has any ideas. –  David Englund Feb 9 '13 at 0:13
1  
One could use their own CA in the application as long as it is verified properly. This would allow some level of revocation. Of course one still needs to find some way to authenticate the initial download of the application. –  ewanm89 Feb 9 '13 at 1:13
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.