Creating_a_CA.mdwn 4.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. A Certificate Authority (CA) signs certificates, marking them as authenticated.
  2. In other words, a CA signature on a certificate says "you can trust the owner of
  3. this certificate". If you're used to visiting a certain website which your
  4. browser trusts, and one day you visit and get a security warning, there's a
  5. chance you're viewing a clone of the real website, made by a scammer, maybe in
  6. hope to get your private account details. Without server authentication, you
  7. wouldn't notice.
  8. I'm not saying SSL is the perfect solution to the problem, or a solution I would
  9. design or spread if it was up to me, but I assume you have your reasons to use
  10. it (and so do I).
  11. For large-scale use of certificates, i.e. large CAs, it is a good idea to create
  12. sub-CAs. These sub-CAs manage their own certificates. It allows responsibility
  13. to be delegated to other people and teams, each managing the certificates
  14. related to its area/domain. With TinyCA, setting up sub-CAs is quite easy, and
  15. the tutorials listed in [[Useful Links]] can help.
  16. However, for small-scale use it is not necessary. This guide is based on home
  17. server experience and is focused on small home/community servers. For those,
  18. it's easier to have a single CA which signs one certificate per service. One for
  19. the website, one for Jabber server and so on. The number of users and services
  20. will probably be small enough to make this approach work well.
  21. When running TinyCA for the first time (or any other time, until you create a
  22. CA), it will automatically open the *Create CA* dialog:
  23. [[!img 1.1-create-ca-blank.png class="center"]]
  24. Now fill in the details.
  25. - __Name__: You can make this the same as data (I'm not sure it has to me the
  26. same, but some sources say it does and I didn't test to see whether it's
  27. true).
  28. - __Data__: Choose a name which refers to yourself, or to your community, or to
  29. your organization - whoever is going to be represented digitally by the CA. I
  30. think it's better not to mention a specific website/resource in this field,
  31. because it should represent an entity (person, community, etc.) and not a
  32. specific resource (server, location, URL, etc.).
  33. - __Password__: Make it long and hard to guess. You'll need it only when
  34. creating new certificates, which won't happen very often. You can write down
  35. the password and keep it somewhere safe - then you don't need to worry about
  36. forgetting it, and it can be longer.
  37. - __Country, organization, etc.__: Fill if you want to. It's not critical. A CA
  38. can be managed by people from different countries, so the location you specify
  39. there isn't something people should rely on anyway.
  40. - __E-mail address__: People will probably find a way to contact you through
  41. your website or service etc., but it doesn't hurt to have a real e-mail
  42. address in the certificate.
  43. - __Valid for__: I'm not an expert, but I suppose having a long validity is
  44. okay. I saw the number 7300 (20 years) in other places. You can keep the
  45. default (10 years) if you want.
  46. - __Keylength, digest__: Use the default values.
  47. Here's an example:
  48. [[!img 1.2-create-ca-filled.png class="center"]]
  49. When you're done, click OK. The CA Configuration window will appear.
  50. - __Key Usage__: Leave the default value.
  51. - __Non/critical__: I read about it a bit. I'm still not sure I understant what
  52. it does, but it seems that __critical__ is the recommended common value used.
  53. If you know more, please share the knowledge :-)
  54. - __nsCertType__: Change to "SSL CA, S/MIME CA, Object Signing CA".
  55. - __subjectAltName__: Leave the default value.
  56. - __authorityKeyIdentifier__: Leave the default value.
  57. - __basicConstraints__: Leave the default value.
  58. - __issuerAltName__: Leave the default value.
  59. - __nsComment__: I'm not an expert, but it seems to be just a comment and its
  60. value isn't significant. Enter anything you wish, or leave the default.
  61. - __nsCaRevocationUrl, nsRevocationUrl__: Address on the web where the
  62. certificate revocation list is accessible to clients. To determine if a
  63. certificate is valid, this list will be consulted to check if a certificate
  64. has been revoked. This cannot be changed after the creation of the CA, so you
  65. need to choose the location now. You can put the revocation list there later,
  66. but make sure the URL is valid and that you'll really be able to make the list
  67. accessible through it.
  68. - __nsCaPolicyUrl, nsPolicyUrl__: A webpage where people read about the policy
  69. of the CA, and any certificate use policy you may have. You can write the
  70. actual document later, but you must set the web address now. Make sure you'll
  71. really be able to put the webpage on that address.
  72. Here's an example:
  73. [[!img 2-ca-config.png class="center"]]
  74. When you're done, click OK. The CA will be created you will be presented with
  75. the main TinyCA window, containing the CA details. It will look like this:
  76. [[!img 3-ca-created.png class="center"]]