Archive

Archives pour la catégorie ‘Apache’

Générer un certificat autosigné pour Apache

10/01/2009

Pour des panels d’administrations ou des choses que vous êtes le seul à utiliser, on peut se contenter d’utiliser un certificat SSL autosigné; c’est à dire qu’il génèrera un warning à la navigation disant qu’il n’a pas été signé par une autorité de certification reconnue; il vous suffira alors de le whitelister dans votre navigateur. Dès le moment où des utilisateurs lambda doivent accéder au site, c’est à proscrire, le simple fait de voir un warning fera qu’ils n’iront pas plus loin.

Voici la commande permettant de générer le certificat, valide 10 ans:

openssl req -x509 -nodes -days 3650 -newkey rsa:1024 \
-out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Cette commande peut bien évidemment être tapée sur une ligne en enlevant le \ à la fin de la première ligne.

Répondez aux différentes questions; pour « Common Name (eg, YOUR name) []« , vous devez mettre le nom du site, sous-domaine éventuel compris.

Ensuite, il faut activer le module SSL pour apache, avec la commande a2enmod ssl. Dans votre fichier apache2.conf, rajoutez NameVirtualHost ip:443 (n’oubliez pas de mettre votre adresse ip à la place de ip :-p). Ensuite, dans le virtual host à protéger, rajouter les lignes suivantes :

SSLEngine on
SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key

Le Virtual host en question doit contenir la définition de l’ip dans sa définition, qui est donc du type <VirtualHost ip:443>. Notez que le wildcard * ne fonctionnera pas… Tous les virtual hosts doivent donc éventuellement être adaptés pour inclure la déclaration de l’ip, vu qu’il n’est pas possible de mixer les déclaration de type *:port et ip:port.

Vérifiez aussi que le fichier ports.conf contient bien la ligne Listen 443.

Vous pouvez ensuite redémarrer apache et tester le bon fonctionnement du site concerné.

Notez que si vous désirer utiliser plusieurs virtual hosts en SSL, vous êtes limités à un virtual host SSL par adresse IP, il faut donc accrocher d’avantages d’ip à votre machine.

Apache ,

Apache: sous domaine commun à tous les virtual hosts

08/01/2009

Il est parfois utile de configurer un même sous domaine pour tous les virtual hosts du serveur, par exemple pour un webmail ou pour un panel d’administration.

Créer un virtual host pour chacun des domaines est long et fastidieux. Heureusement, il est possible de créer un alias, en mettant les lignes suivantes dans le virtual host principal:

ServerName webmail.domaineprincipal.tld
ServerAlias webmail.*

Ainsi, pour tous les domaines ayant un record webmail pointant vers la même ip que webmail.domaineprincipal.tld, il n’est plus nécessaire de créer un virtual host spécifique.

Apache

Apache: Ne pas loguer certaines requêtes

05/01/2009

Pour poursuivre dans la lignée de l’article d’hier qui expliquait comment ignorer les erreurs 404 dans les logs Apache, voici comment ignorer les requêtes en fonction du type de fichier, afin, par exemple, de ne pas enregistrer celles concernant des fichiers javascript ou css.

L’astuce est de définir une variable d’environnement si l’URI correspond à un pattern précis. Dans le virtual host concerné, rajoutez les lignes suivantes:

SetEnvIfNoCase Request_URI "\.(js|css)$" dontlog
CustomLog chemin/vers/le/fichier/log combined env=!dontlog

Vous adaptez le pattern à votre besoin, en rajoutant les extensions qui vous conviennent. Gardez à l’esprit que légalement vous devez garder la trace des accès à votre site, donc ne supprimez pas les appels à des pages de contenu.

Apache

Ignorer les erreurs 404 dans les logs d’erreur d’Apache

04/01/2009

Si vous avez défini un log d’erreur pour Apache, vous avez sûrement déjà remarqué que celui-ci grossit à vue d’oeil en raison des erreurs 404 générées depuis vos différents sites.

Cela peut avoir comme conséquence un blocage d’Apache si le fichier atteint la taille de 2Go avant que logrotate fasse sont travail.

Une solution toute simple à cela est de modifier dans votre fichier /etc/apache2/apache2.conf la directive LogLevel et de la positionner sur crit.

Apache