First round of ssl'ification of tmcd/tmcc. This needs to be looked at
by smarter brains by me (I have asked Dave to look it over). Anyway ... I added a top level ssl directory which has a bunch of goo for creating certificates and keys. I currently create a Certificate Authority, a server certificate, and a client certificate. The private keys for all three are unencrypted, so no password is required. All key/cert combos can be installed on boss. The client side needs the key/cert pair (in one file), and the CA cert (no key!). There are install targets to do this. NOTE, you do not want to create/install these without being careful, since you could instantly invalidate all the clients! I have added the necessary SSL routines to tmcd/tmcc. See the ssl.c and ssl.h file. I have set it up so that with all you need to do is uncomment three lines in the makefile, and accept,connect,read,write, and close are redirected to SSL'ified versions in ssl.c. The current security model is that the client and server both "demand" certificate verification from the other side (as opposed to just server side verification). tmcd reads in server.pem, while tmcc reads in client.pem. Both read in the emulab.pem (CA cert with no private key). Initial testing indicates I have done this at least partially correctly. Whoever invented this stuff has a really twisted mind though. There are some questions at the top of ssl.c that need to be answered. Oh, also redid all the syslog stuff throughout tmcd.