[Apache 2.4] Conflit entre certifs SSL sur deux IP différentes
Bonjour à tous,
je rencontre actuellement un problème au niveau de la configuration d'un domaine et de plusieurs sous-domaines.
Domaine est sur IP1
Les sous domaines sont sur IP2 qui est sur le même serveur, jusque là tout fonctionne :aie:
Ensuite pour des raisons de sécurité j'ai décidé de tout passer sous SSL, étant limité à 5 noms par certif et ayant un besoin exponentiel de vhost j'attribue 5 vhost à une nouvelle IP. Du coup j'ai actuellement cette configuration :
IP1 : Certificat 1 + Domaine
IP2 : Certificat 2 + 5 vhosts de Domaine
Et là bah... à chaque fois le résultat change et rencontre un de ces 3 cas :
1. Tout se passe bien (5% des cas)
2. Une erreur indiquant que le certificat utilisé est celui du site principal est affiché (90% des cas)
2. 1. Quand on force l'accès au site le certificat est reconnu (50% des cas)
2. 2. Quand on force l'accès au site le certificat n'est pas reconnu et on est redirigé vers le site principal (comportement provenant d'IP1 pour les vhosts inexistants)
Autant vous dire que n'ayant jamais vu ça avant je suis assez dépité et perdu. Voici la configuration utilisée :
Bind, fichier zone :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| $TTL 3600
domain.tld. IN SOA ns1.domain.tld. contact.domain.tld. (
2016062106; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
43200 ) ; Negative Cache TTL
@ IN NS ns1.domain.tld.
@ IN NS ns2.domain.tld.
@ IN A IP1
* IN A IP1
ns1 IN A IP1
ns2 IN A 213.251.188.141
cdn1.domain.tld. IN A IP2
cdn2.domain.tld. IN A cdn1.domain.tld.
cdn3.domain.tld. IN A cdn1.domain.tld.
cdn4.domain.tld. IN A cdn1.domain.tld.
cdn5.domain.tld. IN A cdn1.domain.tld.
domain.tld. IN NS ns1.domain.tld.
pop 10800 IN CNAME access.mail.gandi.net.
webmail 10800 IN CNAME agent.mail.gandi.net.
smtp 10800 IN CNAME relay.mail.gandi.net.
imap 10800 IN CNAME access.mail.gandi.net.
@ 10800 IN MX 10 spool.mail.gandi.net.
@ 10800 IN MX 50 fb.mail.gandi.net.
@ 10800 IN TXT "v=spf1 ip4:217.70.176.0/20 ip6:2001:4b98:c::/48 ptr ?all"
ownercheck TXT "********" |
Apache, fichier de config du domaine et des vhosts
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#
# HTTP(S)
#
<VirtualHost IP1:443>
ServerName domain.tld
DocumentRoot /var/www/domain/http/public/
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL
SSLCertificateFile /var/www/.certs/domain/domain.crt
SSLCertificateKeyFile /var/www/.certs/domain/domain.key
SSLCertificateChainFile /var/www/.certs/root.crt
<Directory /var/www/domain/http/public/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/domain.http.error.log
CustomLog /var/log/apache2/domain.http.access.log combined
</VirtualHost>
#
# CDN IP2
#
<VirtualHost IP2:443>
ServerName cdn1.domain.tld
ServerAlias cdn1.domain.tld cdn2.domain.tld cdn3.domain.tld cdn4.domain.tld cdn5.domain.tld
DocumentRoot /var/www/domain/cdn/
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL
SSLCertificateFile /var/www/.certs/domain/cdn-IP2.crt
SSLCertificateKeyFile /var/www/.certs/domain/cdn-IP2.key
SSLCertificateChainFile /var/www/.certs/root.crt
<Directory /var/www/domain/cdn/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://domain.tld [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ https://domain.tld/hotlinking.png [NC,R,L]
ErrorLog /var/log/apache2/domain.cdn.error.log
CustomLog /var/log/apache2/domain.cdn.access.log combined
</VirtualHost> |
Lors du démarrage Apache me demande bien les clés pour chaque certificat, signe qu'ils sont chargés correctement.
Je sais qu'il est impossible d'effectuer ce type de configuration sur une même IP, mais normalement sur deux IP distinctes bind est supposé dispatcher en amont sur la bonne IP, du coup je comprend pas du tout pourquoi j'ai ces problèmes. Je pense que j'ai du oublier une étape quelques part, mais quoi? :koi: