Eu acho que é uma boa idéia como explicar qual é o problema com hosts virtuais e SSL / TLS.
Quando você se conecta a um servidor apache por HTTP, envia um conjunto de cabeçalhos http. Eles se parecem com isso:
GET /index.html HTTP/1.1
Host: www.nice-puppies.com
Se você tiver hospedagem virtual, o apache examinará o campo hosts e, em seguida, obterá o index.html correto para você. O problema é quando você adiciona SSL / TLS. O servidor configura a criptografia antes de você enviar sua solicitação http. Portanto, o servidor não sabe se você está indo para www.nice-puppies.com ou www.evil-haxxor.com até que a autenticação / criptografia seja concluída. O servidor não pode adivinhar (como o envio do certificado errado dá-lhe uma mensagem de erro desagradável).
Uma solução é um certificado curinga (como mencionado acima), que é válido para * .nice-puppies.com. Dessa forma, você pode usar o mesmo certificado para vários domínios, mas não pode ter um certificado * .com (ok, você pode, mas seria muito ruim para todos os outros), então em geral você precisará de IP separado para cada Domínio HTTPS.