Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I work at a very small company so certificate costs need to be absolutely minimal. However for some applications we do Need to have our customers get that warm fuzzy not-using-a-self-signed certificate feeling.

Since creating a "certificate authority" with makecert really just means creating a public/private key pair, it seems pretty clear that creating a public/private key pair FROM such a "certificate authority" really just means generating a second public/private key pair and signing both with the private key that belongs to the "certificate authority". Since the keys are signed anyone can verify they came from the certificate authority I created, or if verisign gave me the pair they sign it with one of their own private keys, and anyone can use verisigns corresponding public key to confirm verisign as the source of the keys.

Given this I don't understand when I go to verisign or godaddy why they have rates only for yearly plans, when all I really want from them is a single public/private key pair signed with one of their private keys (so that anyone else can use their public keys to confirm that, yes, they gave me that public/private key pair and they confirmed I was who I said I was so you can trust my public/private key pair as belonging to a legitimate third party).

Clearly I am misunderstanding something, what is it? Does verisign retire their public/private key pairs periodically so that my verisign signed key pair "expires" and I need new ones?

Edit: I learned that the certificate has an internal expiration date and it also maintains an internal value stating whether it can be used to sign other certificates (i.e. sign other private/public key pairs stored as certificates). Can't I get a few (even one) non-signing certificate signed by someone like verisign that I can use for authentication/encryption without a yearly subscription?

share|improve this question

migrated from stackoverflow.com Dec 23 '10 at 1:07

This question came from our site for professional and enthusiast programmers.

    
GoDaddy charges $60.00 per year. If you have one paying customer then you can afford it. –  GregS Dec 22 '10 at 23:45

4 Answers 4

I would surmise that they put an expiration date on the certificates they issue, to keep themselves in business.

If you want to try a free certificate authority, try CAcert or StartCom. However, your customers might insist on using a more "well-known" certificate authority like VeriSign.

share|improve this answer
1  
I think most users just care if their browser displays warnings or not. –  CodeInChaos Dec 22 '10 at 20:52

Certificates have to have expiry dates, because part of good cryp practice is key management. Althought your private key is secure today, it might be disclosed in some data security breach tomorrow - the longer you keep using the key for, the higher the chance that it will eventually be compromised.

If there was a time-unlimited certificate in existence specifying that compromised key, someone could use that certificate with the compromised key to pretend to be you forever. With the expiry mechanism, they can only pull that off until the certificate expires.

share|improve this answer
1  
Which is why CRLs exist, not expiry dates. Someone only being able to fake being you for 2 years instead of 10 isn't much comfort. Expiry dates are more for algorithm strength reasons, to keep servers from running less-secure versions forever. –  SilverbackNet Dec 23 '10 at 2:26
    
CRLs are only good if the software checks them. Software has been generated which doesn't check the CRL. Other software make the check optional depending on the configuration file. Although not perfect, expiry dates help in with these implementations. –  BillThor Dec 23 '10 at 4:06
    
The longer an encryption key is in use, and the more often it is used, the more it is exposed to attack. Lifetimes on keys are to ensure they are not exposed by things outside of your control. If it would take 500 years to brute-force a 1024bit RSA key today, and 50 years two years from now, a one year life span for today's 1024bit key should ensure that it expires (dies) before it is exposed through attack (probably) (Numbers were made up to protect the mathematically challenged). The goal is not to ensure new algorithms, but to ensure new (fresh) key data. –  Slartibartfast Dec 23 '10 at 5:19

Annual fees allow you to reissue and update your certificate at any time, once you've gone through the initial process. Your certs don't automatically expire when your subscription does; for instance, even with our annual subscription, our certs have a two-year expiration (and the root certificates they're based on are more like 10 years). You can sign your own certs with it, and they'll still be valid as long as you say they should be, as long as they were signed with a cert that was valid at the time. Extended cert chain validation is rarely performed in browsers and other SSL clients, in my experience.

Cert companies will expire certs partly to force you to keep up with SSL security developments (for instance, going from 512 bits to 2048, or to EC instead of RSA), partly to protect you and everyone else in case one of your certs gets out or gets saved and cracked long after you think it's gone, partly to re-vet you every so often, in case you change names, go out of business, or whatever. That's part of their chain of trust. If they find out early, they can issue a CRL immediately, but if not, your old certs will naturally expire with no extra effort.

And it's a revenue stream as well, that's business.

Make sure you get a cert-signing cert if you want to be your own CA, and be prepared for a few headaches getting all of the certs in the chain bundled together when you go to use them.

share|improve this answer
    
What does EC stand for? –  John Robertson Dec 23 '10 at 16:04
    
Elliptical Curve Crypto. The strength is just as high as RSA without the hilariously large bit-sizes, enabling faster processing and key exchange. They'll be part of the upcoming TLS 1.3. –  SilverbackNet Dec 23 '10 at 22:20

Depending on the signing authority verification can be quite extensive (and thus expensive for the authority). This will increase the cost of the certificate. Generally the cost of the certificate will vary with the level of verification done. New technology allows for some indication of the degree of trust to be reflected by a colored notification in the address bar.

The certificate authority's certificate will usually expire every ten years or so. Some of this time will be required to get the certificates deployed in the browser's certificate cache, so they may not be used for the first year or two. For the last year or two they won't be useful as the signing key will expire before signed key expires.

By signing your key, the certificate authority is essentially saying we trust the holder of this certificate so you can trust them too. They should periodically be verifying this trust, hence one of the reasons certificates expire.

CRLs if they are provided and checked allow the signing authority to announce they no longer trust the holder of the key. This can occur for a variety of reasons; stolen key, inappropriately issued key, key is no longer used, or some other reason. Certificate expiry can be used reduce the size of the CRL database.

Some signing authorities will issue multi-year certificates. This may only be available for renewal certificates.

Once you start using certificates you will be committing to maintaining the trust relationships involved. This will include deploying updating certificates periodically.

share|improve this answer

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.