Why SSL cannot be used with name-based virtual hosts?
Answer:
The reason is pretty simple: If you are using a single IP but with many virtual hosts, each virtual hosts has their own certificate and private key. Without looking at the Host header in the incoming HTTP request, Apache will not be able to route the request to the designated virtual hosts. The core problem is, the incoming requests are encrypted so we are not able to tell which key should be used for decryption!
So only IP-based virtual hosts works if you need SSL.