Apache semble aligner toutes les demandes HTTPS au premier <VirtualHost *:443>
Quelle que soit la correspondance SNI sur les champs ServerName/Serveralias.
Apache est construit avec SNI
Version du serveur: Apache/2.2.22 (Ubuntu)
Server construit: MAR 8 2013 15:53:13
[.____] OpenSSL 1.0.1 14 mars 2012
eRROR.LOG Rapports:
Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
Qui suggère que SNI fonctionne selon http://wiki.apache.org/httpd/namebasedsslvhostswithsni (Comment pouvez-vous dire si votre construction Apache prend en charge SNI?)
SSL_TLS_SNI
Semble être défini de manière appropriée lorsque demandé à l'aide de HTTPS (vérifié avec phpinfo()
)
Configuration:
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
#<VirtualHost *:443>
# <Location />
# Order allow,deny
# Deny from all
# </Location>
#</VirtualHost>
<VirtualHost *:443>
SSLEngine on
ServerAdmin webmaster@localhost
ServerName server.com
ServerAlias server.com
DocumentRoot /web/default
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
SSLCertificateFile /path/server.com.crt
SSLCertificateKeyFile /path/server.com.key
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
ServerAdmin webmaster@localhost
ServerName alias.com
ServerAlias alias.com
DocumentRoot /web/default
ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
SSLCertificateFile /path/alias.com.crt
SSLCertificateKeyFile /path/alias.com.key
</VirtualHost>
-- https://server.com et https://alias.com Essayez de servir le certificat (et le contenu si vous ignorez le certificat Avertissement) de Server.com
La configuration similaire fonctionne bien en utilisant http: 80 (seul changement est SSLENGINE sur et les chemins de certificat/clés)
Si je détache le premier hôte virtuel (restreindre l'accès HTTPS aux sites définis), je reçois toujours une erreur SSL (même s'il s'agit d'un site défini))
Merci
Edit:
Drapeaux supplémentaires
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLStrictSNIVHostCheck on
SSLVerifyClient none
SSLProxyEngine off
SSLStrictSNIVHostCheck on
Donc, il ne faut donc pas prendre en charge les navigateurs activés SNI de toute façon
Apache2ctl -S
Sortie:
*:443 is a NameVirtualHost
default server server.com (/etc/Apache2/sites-enabled/000-default:22)
port 443 namevhost server.com (/etc/Apache2/sites-enabled/000-default:22)
port 443 namevhost alias.com (/etc/Apache2/sites-enabled/000-default:39)
port 443 namevhost other.com (/etc/Apache2/sites-enabled/other:22)
Mise à jour
Donc, pour une étrange raison, le problème semble avoir résolu lui-même.
Peut-être que c'est une sorte d'étrange problème de mise en cache ou quelque chose (bien que j'ai Apache2ctl stop/start/restart
et Sudo service Apache2 stop/start/restart/reload
levé plusieurs fois et avez effectué des tests localement sur le serveur ainsi que plusieurs machines différentes).
N'hésitez pas à prendre cette question ou à le laisser si elle sert une sorte de référence.
Merci pour votre aide, vous tous!
Votre configuration semble ok; La directive SSLENGINE ON a été incluse; Selon le message du journal, on dirait que le problème vient du côté du client.
Tous les clients ne soutiennent pas SNI, mais la plupart d'entre eux font. Cela dépend de la manière dont la négociation SSL est faite, par le système (ne fonctionne pas sur Win XP alors) ou par le navigateur (la version doit être suffisamment récente). Regardez Liste des navigateurs avec support Sni . Si vous devez vous assurer que tous les clients obtiennent accès à vos sites Web, vous ne pouvez pas utiliser SNI en raison de ces anciennes versions (du navigateur ou du système). Vous auriez besoin d'une adresse IP par ServerName et utilisez virtualhost $ IP_ALIAS: 443 pour serveurName Alias.com et VirtualHost $ IP_Server: 443 pour serveurName Server.com au lieu de VirtualHost *: 443 pour les deux.
Vous obtenez une erreur avec le premier hôte virtuel car, n'ayant pas inclus le SSLEngine on
Directive, Apache envoie une réponse HTTP sans SSL. Si vous souhaitez ce type de fonctionnalité, vous devez configurer un autre site (éventuellement avec un autre certificat, sauf si vous réutilisez un domaine existant) pour votre Vhost par défaut, même si tout ce que vous voulez faire est de renvoyer une belle erreur.
Vérifiez peut-être que les certificats sont en réalité différents? Votre configuration apparaît correcte.
Vérifiez également qu'il n'y a pas d'autre d'autres sections VirtualHost
sections à l'écoute du port 443. Apache sélectionnera le meilleur correspondant, ce qui signifie que si quelque chose est plus spécifique à l'adresse indiquée par la connexion, cette entrée prendra priorité. Je ne pense pas que ce soit votre problème, cependant.
De plus, en tant que point d'intérêt, ce que vous voyez du côté de l'utilisateur, c'est ce qui se produirait si le client n'a pas soutenu SNI dans la plupart des cas.