Now if I visit http://example1.com, I actually open http://example2.com.
Isso é (em parte) porque a porta 80 e a porta 443 não são automaticamente intercambiáveis. Não há (em geral) mecanismos para redirecionar automaticamente as solicitações de uma porta para outra, a menos que você especifique esse comportamento no próprio servidor (observe que isso exclui alguns plug-ins de navegador ou recursos que forçam as conexões HTTPS).
I suppose http://example1.com is not accessible[.]
Isso está correto. A menos que você defina um host virtual HTTP na porta 80 com esse domínio, ele não existe e, portanto, não pode ser acessado (esquecendo-se dos hosts "padrão"). Estou assumindo que você definiu example1.com em seu arquivo "hosts" ou DNS também.
I tried to add a default virtual host [...] but that did not help.
Pode haver outros problemas com sua configuração. No entanto, o que você provavelmente precisa (pelo menos para começar) é uma entrada de host virtual real que corresponda ao link :
Listen 80
Listen 443
# Virtual Hosts For Basic HTTP Services
<VirtualHost *:80>
ServerName example1.com
# We can use * to catch all sub-domains other than e.g. www
# ServerAlias www.example1.com *.example1.com
ServerAlias www.example1.com
# DocumentRoot "/var/www/example1.com"
# DocumentRoot "/var/www/default"
# If we get any requests on port 80 for example1.com
# redirect them to e.g. http://www.example1.com:443/
Redirect permanent / http://www.example1.com:443/
</VirtualHost>
# This is not an SSL (HTTPS) virtual host
<VirtualHost *:443>
ServerName example1.com
DocumentRoot "/var/www/example1.com"
</VirtualHost>
# Our other domain
<VirtualHost *:80>
ServerName example2.com
DocumentRoot "/var/www/example2.com"
</VirtualHost>