Apache2 + SSL sample configuration

Configuration simple et rapide pour utiliser apache en mode HTTPS

mkdir /etc/apache2/ssl.crt

# génération d'un certificat
openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl.crt/apache.cert -keyout /etc/apache2/ssl.crt/apache.key

chmod 600 /etc/apache2/ssl.crt/apache.cert /etc/apache2/ssl.crt/apache.key

a2enmod ssl

rm /etc/apache2/sites-enabled/000-default
wget /uploads/apache/ssl -O /etc/apache2/sites-enabled/ssl

/etc/init.d/apache2 restart

Fichier de conf: /etc/apache2/sites-enabled/ssl

ServerName httpserver

ServerSignature Off
ServerTokens Prod

# Force https
<VirtualHost *:80>
        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

<VirtualHost *:443>

        DocumentRoot /var/www
       
        <Directory />
            Order deny,allow
            Deny from all
            Options None
            AllowOverride None
        </Directory>
       
        <Directory /var/www/>
            Options -ExecCGI -Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl.crt/apache.cert
        SSLCertificateKeyFile /etc/apache2/ssl.crt/apache.key
        # SSLCACertificateFile  /etc/apache2/ssl.crt/apache.chain
       
        # Deny hidden files
        <Files ~ "^\.">
            Order allow,deny
            Deny from all
            Satisfy All
        </Files>
        # Deny hidden folders / files
        RedirectMatch 403 /\..*$
       
        AddDefaultCharset UTF-8

        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
</VirtualHost>

Apache2 default configuration + tips

Ma configuration par défaut toute simple

Avec masquage des versions du serveur dans les en-têtes HTTP ( Server Apache/2.2.16 (Debian) ) et pages d’erreurs (Not Found, etc..):

ServerName httpserver

ServerSignature Off
ServerTokens Prod

<VirtualHost *:80>

        DocumentRoot /var/www
       
        <Directory />
            Order deny,allow
            Deny from all
            Options None
            AllowOverride None
        </Directory>
       
        <Directory /var/www/>
            Options -ExecCGI -Indexes FollowSymLinks
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        # Deny hidden files
        <Files ~ "^\.">
            Order allow,deny
            Deny from all
            Satisfy All
        </Files>
        # Deny hidden folders / files
        RedirectMatch 403 /\..*$
       
        AddDefaultCharset UTF-8

        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
</VirtualHost>

Fast install:

wget /uploads/apache/default -O /etc/apache2/sites-enabled/000-default

/etc/init.d/apache2 restart

Redirection permanente

<VirtualHost *:80>
        Redirect permanent / http://www.google.fr/
</VirtualHost>

Sécuriser un dossier upload

Interdir d’exécuter un fichier php

        <Directory /var/www/wordpress/wp-content/uploads>
                        php_flag engine off
        </Directory>

Config SSL

avec redirection pour forcer HTTPS / force secure mode

<VirtualHost *:80>
        Redirect permanent / https://google.fr/
</VirtualHost>

Listen 443
<VirtualHost *:443>
                ServerName google.fr
        DocumentRoot /var/www/google
       
                <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
               
        <Directory /var/www/google>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
               
                SSLEngine on
                SSLCertificateFile    /etc/apache2/ssl.crt/google.fr.cert
                SSLCertificateKeyFile /etc/apache2/ssl.crt/google.fr.key
                SSLCACertificateFile  /etc/apache2/ssl.crt/google.fr.chain

        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
</VirtualHost>

Config Gitweb

<VirtualHost *:80>

        ScriptAlias /git /usr/lib/cgi-bin/gitweb.cgi
        Alias /gitweb.css /usr/share/gitweb/gitweb.css
        Alias /git-logo.png /usr/share/gitweb/git-logo.png
        Alias /gitweb.js /usr/share/gitweb/gitweb.js
        <Directory /home/git/repositories/>
                Options Indexes FollowSymLinks ExecCGI
                Order allow,deny
                Allow from all
        </Directory>

</VirtualHost>