29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Trucs & astuces / eZ Publish : créer des zones SSL





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : créer des zones SSL

Date de publication: le lundi 17 décembre 2007 à 05h32
Dernière modification: par Pascal BOYER le lundi 17 décembre 2007 à 05h43
« Article précédent: eZ Publish : utiliser les brouillons
» Article suivant: eZ Publish : critères d'accessibilité

eZ Publish : créer des zones sécurisées SSL

Cet article, complémentaire de celui-ci , a pour but de détailler la mise en oeuvre des zones sécurisées dans un environnement eZ Publish (3.9.4 à l'heure où j'écris cet article).

Il explique comment configurer le fichier de configuration du serveur Apache2 (2.2.x) et comment configurer les fichiers de configuration de eZ Publish.

eZ Publish : configurer Apache2 pour les zones SSL

Pour la mise en oeuvre d'accès sécurisés, il est d'abord nécessaire de créer les éléments suivants:

  1. une Autorité de Certification,
  2. un certificat pour cette AC,
  3. une clef publique,
  4. une clef privée.

Toutes les commandes permettant de réaliser chacun de ces éléments sont détaillées dans cet article: SSL/TLS : autorité de certification et certificats

Après avoir créé l' Autorité de Certification (voir l'article donné en lien ci-dessus), voici un récapitulatif des commandes nécessaires et suffisantes:

Création de la clef privée de l'AC:

openssl genrsa -des3 -out AC_perso/private/AC_perso.key 2048

Création du certificat de l'AC:

openssl req -new -x509 -days 3650 -key AC_perso/private/AC_perso.key -out AC_perso/private/AC_perso.crt

La clef privée:

openssl genrsa -out AC_perso/private/server_tls.pem 2048

Création de la CSR (Certificate Signing Request ou Demande de Signature de Certificat)

openssl genrsa -out AC_perso/private/server_tls.pem 2048

Signer la CSR:

openssl ca -in AC_perso/newcerts/server_CSR.pem -out AC_perso/certs/server_signed.pem -keyfile AC_perso/private/AC_perso.key -cert AC_perso/private/AC_perso.crt -days 3650

apache2.conf : configurer le serveur web Apache 2

Pour que le serveur apache 2 prenne en compte les connexions sécurisées assurées par le protocole https , voici les lignes à ajouter à son fichier de configuration /etc/apache2/ apache2.conf :

# ==================================  SSL/TLS  ==================================
 
# La directive SSLProtocol (p256) définit quels variantes du protocole SSL seront utilisables par "mod_ssl" et qui
# seront donc imposés aux clients.
# Variantes possibles: SSLv2, SSLv3, TLSv1, All
SSLProtocol +TLSv1 +SSLv3
 
# La directive SSLCACertificatePath (p257) définit l'emplacement du certificat de mon AC.
SSLCACertificateFile "/usr/lib/ssl/AC_perso/private/AC_perso.crt"
 
# La directive SSLCertificateKeyFile (p256,248) définit l'emplacement de la clef pubique (ou certificat signé) du serveur HTTP.
SSLCertificateFile "/usr/lib/ssl/AC_perso/certs/server_signed.pem"
 
# La directive SSLCertificateFile (p256,248) définit l'emplacement de la clef privée du serveur HTTP.
SSLCertificateKeyFile "/usr/lib/ssl/AC_perso/private/server_tls.pem"
 
 
 
 
 
# Ci-dessous, je mets en place SSL pour l'ensemble du site.
# PENSER À "/etc/apache2/ports.conf" POUR QUE Apache2 ÉCOUTE AUSSI SUR LE PORT 443
<VirtualHost 88.191.30.14:443>
 
    ServerName "www.monsite.fr"
    DocumentRoot /usr/local/www
    SSLEngine On
 
# ========= CONFIGURATION EZ PUBLISH =========
# Il s'agit des règles de réécriture de ez publish
 
DirectoryIndex index.php index.html
 
<Directory /usr/local/www>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
 
<IfModule mod_php4.c>
    php_admin_flag safe_mode Off
    php_admin_value register_globals    0
    php_value magic_quotes_gpc  0
    php_value magic_quotes_runtime  0
    php_value allow_call_time_pass_reference 0
</IfModule>
 
<IfModule mod_rewrite.c>
# La directive RewriteEngine (appelé aussi "mot clef") indique si le moteur de réécriture doit être lancé (on)
    RewriteEngine On
    Rewriterule ^/var/storage/.* - [L]
    Rewriterule ^/var/[^/]+/storage/.* - [L]
    RewriteRule ^/var/cache/texttoimage/.* - [L]
    RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
    Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
    Rewriterule ^/share/icons/.* - [L]
    Rewriterule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
    Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
    RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
    RewriteRule ^/favicon.ico - [L]
    RewriteRule ^/robots.txt - [L]
 
    RewriteRule ^/phpMyAdmin_2112 - [L]
    RewriteRule ^/repTemporaire - [L]
    RewriteRule ^/* /index.php
</IfModule>
 
</VirtualHost>
 
NameVirtualHost 88.191.30.14:80
<VirtualHost 88.191.30.14:80>
        ServerAdmin webmaster@localhost
 
        DocumentRoot /usr/local/www
        DirectoryIndex index.php index.html
        <Directory /usr/local/www>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
 
# ========= CONFIGURATION EZ PUBLISH =========
 # Il s'agit des règles de réécriture de ez publish        <IfModule mod_php4.c>
                php_admin_flag safe_mode Off
                php_admin_value register_globals    0
                php_value magic_quotes_gpc  0
                php_value magic_quotes_runtime  0
                php_value allow_call_time_pass_reference 0
        </IfModule>
 
        <IfModule mod_rewrite.c>
                # La directive RewriteEngine (appelé aussi "mot clef") indique si le moteur de réécriture doit être lancé (on)
                RewriteEngine On
                Rewriterule ^/var/storage/.* - [L]
                Rewriterule ^/var/[^/]+/storage/.* - [L]
                RewriteRule ^/var/cache/texttoimage/.* - [L]
                RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
                Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
                Rewriterule ^/share/icons/.* - [L]
                Rewriterule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
                Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
                RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
                RewriteRule ^/favicon.ico - [L]
                RewriteRule ^/robots.txt - [L]
 
                RewriteRule ^/phpMyAdmin_2112 - [L]
                RewriteRule ^/repTemporaire - [L]
                RewriteRule ^/* /index.php
        </IfModule>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
 
        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

Pour que le serveur Apache 2 écoute sur le port 443, port standard du protocole HTTPS, il faut renseigner cet autre fichier de configuration: /etc/apache2/ ports.conf :

Listen 80
Listen 443

Enfin, il faut installer les modules suivants:

ls -la /etc/apache2/mods-enabled/ |grep ssl

lrwxrwxrwx 1 root root   26 2007-12-14 04:41 ssl.conf -> ../mods-available/ssl.conf
 lrwxrwxrwx 1 root root   26 2007-12-14 04:41 ssl.load -> ../mods-available/ssl.load

Pour cela:

cd /etc/apache2/mods-enabled/

ln -s ../mods-available/ssl.conf ssl.conf

ln -s ../mods-available/ssl.load ssl.load

Il ne reste plus qu'à relancer le serveur web:

/etc/init.d/apache2 restart

ou lui demander de simplement relire son fichier de configuration:

/etc/init.d/apache2 reload

A partir de maintenant, toutes les pages du site web sont accessibles en utilisant indifféremment les deux protocoles http et https.

eZ Publish : créer une zone SSL

Supposons que l'on souhaite sécuriser toutes les pages de connexion pour que soient chiffrés le login et mot de passe tapés par l'utilisateur.

Pour réaliser ceci, voici les lignes à ajouter au fichier de configuration settings/override/ site.ini.append.php (je n'indique que les lignes à ajouter):

[SiteSettings]
SSLPort=443
 
[SSLZoneSettings]
SSLZones=enabled
#SSLSubtrees[]
# SI ON MET keep CELA VEUT DIRE QUE L'ON SOUHAITE CONSERVER LE MODE http ET NON https
ModuleViewAccessMode[user/login]=ssl
ModuleViewAccessMode[content/*]=keep

Après avoir vidé les caches, le serveur Apache basculera automatiquement en mode sécurisé à chaque appel d'une page de connexion.

Commentaires