>
> It will have a different set of cert files.  I let it have an IP which
> nothing else shares.

I'm keenly aware of this IP as I've set it up in DNS as well.

If you have <VirtualHost *:443>, it will use ALL IPs - if you want to
dedicate an IP for a site, you need to specify IPs for every other site too.

I am not sure how this matches what you see though - non-wildcard
VirtualHost declarations are supposed to have precedence over wildcards and
I have never seen this issue on any of my systems.

>From the documentation (
https://httpd.apache.org/docs/2.4/mod/core.html#virtualhost):

> When a request is received, the server first maps it to the best matching
> <VirtualHost> based on the local IP address and port combination only.
> Non-wildcards have a higher precedence. If no match based on IP and port
> occurs at all, the "main" server configuration is used.

If multiple virtual hosts contain the best matching IP address and port,
> the server selects from these virtual hosts the best match based on the
> requested hostname. If no matching name-based virtual host is found, then
> the first listed virtual host that matched the IP address will be used. As
> a consequence, the first listed virtual host for a given IP address and
> port combination is the default virtual host for that IP and port
> combination.


Use `httpd -S` (or `apache2ctl -S`, depending on your distribution) to
verify the list of VirtualHosts being served.

- Y

On Fri, May 20, 2022 at 12:56 PM frank picabia <fpica...@gmail.com> wrote:

> I'm trying hard to get the lay of the land logic here, and it isn't
> happening.  I'm bouncing between what I read here,
> and what apache actually does, and it doesn't add up.
>
> In my case we tried to introduce a new domain, let's call it example2.com
> It will have a different set of cert files.  I let it have an IP which
> nothing else shares.
> I'm keenly aware of this IP as I've set it up in DNS as well.
>
> <VirtualHost 1.1.1.13:443>
> Servername example2.com
> SSLEngine on
> SSLCertificateFile /etc/http/certs/example2.crt
> ...
> </VirtualHost>
>
> Every other vhost had a different servername, and they used the
> cert for example1.com .  They also had *:443
> Only for example1.com do we have multiple aliases on the same IP.
>
> When visiting the example2.com site, the web site shows apache has served
> a certificate for example1.com
>
> I had believed this was because we had used *:443 rather than explicitly
> show the IP
> for all our vhosts.  It seemed the early conversation on SSL/TLS was
> matching a random
> vhost via this use of *:443 and that's how it got the cert for
> example1.com
> Since before this point all vhosts were on example1.com the wildcard cert
> it
> found was always working while we had *:443 in use.
>
> What can we say about how multi-domain SSL works that we can rely on?
> I can find a dozen pages on google search from people who get the wrong
> certificate and they never get an answer.  Some good hard rules on what
> is required would probably help a lot of people over the years.
>
>
>
> On Fri, May 20, 2022 at 11:59 AM Frank Gingras <thu...@apache.org> wrote:
>
>> As mentioned, name-based vhosts will work with SNI and *:443 provided
>> that you have the correct certificate assigned to each vhost.
>>
>> In rare cases, you can use IP:443 vhosts if you want specific handling
>> based on the IP used to handle the request, such as https://IP1/ or
>> https://IP2/. However, it is rarely needed by most servers.
>>
>> For now, you can use *:443, and run apachectl -S to make sure there is no
>> overlap before restarting httpd.
>>
>> On Fri, 20 May 2022 at 07:04, frank picabia <fpica...@gmail.com> wrote:
>>
>>>
>>> Sorry, that should not have said "top level domains".  I meant domains.
>>> Like example.com, example.net.
>>>
>>>
>>> On Fri, May 20, 2022 at 7:05 AM frank picabia <fpica...@gmail.com>
>>> wrote:
>>>
>>>>
>>>> It looks like there are two requirements for multiple top level domains
>>>> with SSL
>>>> on the same apache.
>>>>
>>>> 1. IP values must be used inside VirtualHost, not *:443
>>>> 2. All IP values must be unique, even on the same top level domain
>>>>
>>>> Is the above conjecture true?
>>>>
>>>> We have many setup like this example...
>>>>
>>>> <VirtualHost *:443 >
>>>>    ServerName s1.example1.com
>>>> ...
>>>> </VirtualHost>
>>>>
>>>> <VirtualHost *:443 >
>>>>    ServerName s2.example1.com
>>>> ...
>>>> </VirtualHost>
>>>>
>>>> where s1 and s2 are aliases on the same IP.  It has worked like that
>>>> for years.  330 vhosts on about 80 IPs.
>>>>
>>>> When I started to convert them to use the actual IP value rather than *
>>>>
>>>> <VirtualHost 1.1.1.1:443 >
>>>>    ServerName s1.example1.com
>>>> ...
>>>> </VirtualHost>
>>>> <VirtualHost 1.1.1.1:443 >
>>>>    ServerName s2.example1.com
>>>> ...
>>>> </VirtualHost>
>>>>
>>>> This had nothing to do with the example2.com I also want to put in
>>>> there
>>>> but on a unique IP.  I did a few conversions from *:443, saved it and
>>>> restarted apache.
>>>> Then vhosts I had not touched yet were getting pages for other
>>>> vhosts.  It was random chaos and I reverted to the previous ssl.conf
>>>> copy
>>>>
>>>>
>>>>

Reply via email to