If I have SSL enabled and I click add to cart, once I click checkout it says "Cart is empty".
It looks to me just guessing that when SSL is not active when you add to cart so the shopping cart is under a different session state than when it becomes SSL.
If I manually put "https" before I add to the cart it works fine.
I need to know what the steps are if possible to fix this. I hope there is a config option or something I am doing wrong.
The problem is that your http and https sites are getting two separate machineKeys autogenerated, so they end up with two different sessions.
This is solved if you add your own machineKey to the main web.config. Use a site like this one (http://aspnetresources.com/tools/machineKey) to generate a machine key and put it in under the system.web node in your web.config.
BTW - This also solved an issue I had of just loosing sesion frequently because my ISP frequently recycles the application, which generates new automatic machine keys.