Quando você acessa um site via HTTP, o nome do domínio não é usado apenas para o DNS; Ele também é enviado pelo próprio HTTP (como Host:
header). Dessa forma, o mesmo servidor pode hospedar muitos sites (às vezes um ou dois, às vezes centenas ao mesmo tempo) no mesmo endereço IP - chamado de hospedagem virtual .
Com conexões HTTPS, o mesmo nome é enviado por TLS (como extensão de Indicação do nome do servidor), portanto, o servidor pode escolher qual certificado usar para qual site, novamente ao hospedar muitos sites no mesmo endereço IP.
Mas se você tentar acessar https://<ip-address>/
, não há nada que o navegador possa enviar, então o servidor também não sabe qual site você deseja.
(Tenho certeza que isso foi respondido muitas vezes, mas não consigo encontrar um bom post no site)