Поскольку запрошенный домен находится в заголовках http (и, таким образом, все еще зашифрован, когда apache должен решить, какую конфигурацию vhost использовать), apache использует IP и порт, чтобы выбрать, какую конфигурацию vhost SSL использовать, не имя домена.
Изменить:
Я должен был упомянуть SNI и пару других факторов в своем ответе. SNI - это дополнение к TLS, которое позволяет серверам использовать несколько именованных конфигураций виртуальных хостов для одной комбинации IP / порта. Но поскольку у вас есть только один блок конфигурации *: 443 VirtualHost, apache всегда будет его выбирать.
То, что вы хотите сделать, возможно, и самый простой способ - активировать default-ssl в качестве перехвата для запросов, не нацеленных на конкретный домен. Я не совсем понимаю, что вы подразумеваете под ошибкой «дубликат по умолчанию» при активации default-ssl, полное сообщение об ошибке может быть более полезным.
A possible alternative, rather than blocking access, what if you forwarded any requests that come to the ip address over to your hostname? This could be done with htaccess or mod_rewrite.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^123\.55\.33\.123
RewriteRule (.*) http://domain-one.com/$1 [R=301,L]
I believe because the way SSL works (ip address-dependent) that you won't be able to block requests at the apache level. If you're working w PHP or such, you could have an include file that checks the $_SERVER['HTTP_HOST'] and dies if it's your ip address.