2009-10-10 4 views
1

Je reçois un certificat de Gandi pour un domaine www.mondomaine.fr Mais pour sql.mondomaine.fr je voulais utiliser un certificat SSL auto-signé.Comment utiliser sur le même serveur Apache2 2 différents certificats en utilisant VirtualHost?

Si j'active sql.mondomaine.fr, le site www.mondomaine.fr utilise le certificat auto-signé au lieu de celui de Gandiś.

Si je désactive le sql. Tout fonctionne bien. Comment puis-je gérer l'utilisation de différents certificats?

Il semble que la première configuration de VirtualHost prenne pour chaque SSL VirtualHost.

Nous vous remercions de votre aide.

Voici ma configuration:

Pour PHPMyAdmin:

<VirtualHost *:443> 
    # Chemin vers les données web 
    DocumentRoot /usr/share/phpmyadmin 

    ServerName sql.mondomaine.fr 

    SSLEngine On 
    SSLCertificateFile /etc/apache2/ssl/phpmyadmin.pem 
</VirtualHost> 

Pour mondomaine.fr

<VirtualHost *:443> 
    ServerName www.mondomaine.fr 
    DocumentRoot /var/www/mondomaine/ 
    CustomLog /var/log/apache2/secure_access.log combined 

    SSLEngine on 
    SSLCertificateFile /etc/ssl/mondomaine.fr.crt 
    SSLCertificateKeyFile /etc/ssl/mondomaine.fr.key 
    SSLCACertificateFile /etc/ssl/GandiStandardSSLCA.pem 
    SSLVerifyClient None 
</VirtualHost> 

La configuration est correcte, car si la première lecture VirtualHost est PHPMyAdmin.pem ModSSL utilisation celui-ci et si c'est mondomaine.fr.crt le premier VirtualHost, Apache utilise celui-ci.

Répondre

2

Vous êtes en cours d'exécution contre un problème général avec HTTP sur SSL - lorsqu'un client se connecte, il spécifie l'hôte auquel il veut se connecter en utilisant l'en-tête Host: HTTP, mais cela vient seulement après la prise de contact SSL (lorsque le certificat est présenté) est terminée. Les versions récentes des extensions de prise en charge de TLS (spécifiées dans la RFC 4366) qui permettent au client de spécifier à quel hôte il a l'intention de se connecter lors de la prise de contact SSL, avec l'intention spécifique de supporter vhosts; pour citer le RFC:.

« » » TLS ne fournit pas de mécanisme pour un client de dire à un serveur le nom du serveur, il est en contact peut être souhaitable pour les clients de fournir ces informations pour faciliter sécurité connexions à serveurs multiples serveurs hôtes « virtuels » à une seule adresse réseau sous-jacente « » »

Selon Wikipedia, les versions récentes de Firefox, Opera, IE, Chrome, et prennent en charge Safari cette extension. les autres clients n'enverraient toujours pas l'extension, et vous n'avez pas de chance là-bas. Vous devez également utiliser au moins TLS 1.1 pour activer le support des extensions. Il existe quelques documentation sur comment configurer ceci avec Apache; Vous devrez peut-être reconstruire OpenSSL et/ou Apache avec des options spécifiques, en fonction de votre configuration locale.

+0

OMG !! Cela signifie que si vous avez deux sites Web sur le même serveur, vous ne pouvez pas avoir un fichier pour chacun d'entre eux? Est-il possible de concaténer de nombreux fichiers pem dans le même pour envoyer tout pendant la négociation ssl pour laisser le navigateur choisir celui? – Natim

+0

Non; l'établissement de liaison SSL ne prend en charge que l'envoi d'un seul certificat. Cependant, l'extension SNI permet au serveur de déterminer celle que le client s'attend à obtenir; sinon, comme vous l'avez remarqué, Apache utilisera toujours le premier certificat que vous avez défini dans le fichier de configuration, car sans SNI, il n'a aucun moyen de le comprendre au moment où l'établissement de liaison SSL commence. –

+0

Nous l'extension SNI, ça marche bien. Je vous remercie. – Natim

0

Cela dépend comment vous avez créé votre certificat. Si vous l'avez acheté seulement pour le sous-domaine www ne travaillera pas pour sql. ce que vous devez faire est de le faire pour autoriser n'importe quel sous-domaine, mais ces certificats sont plus chers.

En d'autre part, vous pouvez utiliser votre propre ceritificate, il vous suffit de sûr de ce que vous mettez lorsque vous créez votre virtutalhost

<virtualhost XXX.XXX.XXX.XXX:443> 
serverName www.mondomaine.fr 
# Gandiś ceritificate 
</virtualhost> 

<virtualhost XXX.XXX.XXX.XXX:443> 
serverName sql.mondomaine.fr 
# your own certificate stuff 
</virtualhost> 
+0

C'est exactement ce que j'ai fait, mais ça ne marche pas. – Natim

Questions connexes