PhpMyAdmin + SSl [NEED HELP !]

Bonjour à toutes et à tous !

Voila depuis ce matin je galère a faire fonctionner mon /phpmyadmin sur du https
après avoir lu les docs et surfé sur le net, J’ai constaté qu il y a plusieurs méthodes.
en tout j’ai compris qu il faut intégrer ce code après génération des cert+key

Fichier /etc/phpmyadmin/apache.conf

	   <IfModule mod_rewrite.c>
              <IfModule mod_ssl.c>
			  
			  RewriteEngine on
         RewriteCond %{HTTPS} !^on$ [NC]
         RewriteRule . https://%{HTTP_HOST}:443%{REQUEST_URI}  [L]
		 
			  SSLEngine on
        SSLCertificateFile    /etc/phpmyadmin/ssl/phpmadm.cert.pem
        SSLCertificateKeyFile /etc/phpmyadmin/ssl/phpmadm.key.pem

Fichier apache.conf initiale

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
        Options FollowSymLinks
        DirectoryIndex index.php

        <IfModule mod_php5.c>
                AddType application/x-httpd-php .php

                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_admin_flag allow_url_fopen Off
                php_value include_path .
                php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
                php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
        </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
    Order Deny,Allow
    Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Order Deny,Allow
    Deny from All
</Directory>

j’ai fais aussi le

 a2enmod rewrite 

Après plusieurs essaies le serveur d’apache ne veut redémarrer qu’après suppression de la partie SSL et rewrite que j’ai rajouter au apache.conf de phpmyadmin
des erreurs de syntaxe je suppose.

Alors quelqu’un aurai une idée ? :pray:
:119
Merci d’avance :slightly_smiling:

Personne ?

Bon, je serai le 1er à te répondre.

La mise en place d’un https pour phpmyadmin est longue à expliquer car il y a plusieurs étapes.

On suppose que tu n’as pas touché au fichier de configuration de phpmyadmin.

D’abord, c’est dans le fichier /etc/apache2/conf.d/phpmyadmin.conf que tu dois préciser que tu veux rediriger http vers https ton phpmyadmin, comme ceci :

        ...
        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}/phpmyadmin/
        </IfModule>

        <IfModule mod_php5.c>
          ...

Comme cette redirection utilise le module rewrite, alors tu dois l’activer en root :

a2enmod rewrite

Ensuite tu dois ouvrir le port 443 (à taper en root) :

iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

Et normalement si tout va bien, le port 443 est ouvert, il suffit de le vérifier :

netstat -an | grep "443" et en vérifiant qu'on a bien dans le résultat :
...
tcp6       0      0 :::443                  :::*                    LISTEN     
...

Ensuite dans le fichier /etc/apache2/ports.conf, tu dois ajouter la ligne NameVirtualHost *:443 pour autoriser apache à utiliser le port 443, comme ceci :

<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 
    NameVirtualHost *:443
    Listen 443
</IfModule>

Ensuite tu active le module ssl (en root):

a2enmod ssl

Puis tu crée en tant que root un dossier ssl pour ranger tes futurs clés, et tu te place dedans :

mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

Ensuite tu crée la clé privé (on imagine que le nom de ton serveur est ns.example.com). Retiens bien la passphrase que tu vas saisir car t’en aura besoin pour créer le certificat SSL auto-signé :

openssl genrsa -des3 -out ns.example.com.key 2048

Comme la clé privé ne doit être lu que par root, alors on sécurise les droits de cette clé :

chmod 400 ns.example.com.key

Puis on crée un certificat auto-signé à l’aide de la clé privée RSA qu’on vient de créer (on te demandera de saisir la passe phrase de la clé privé) :

openssl req -new -x509 -nodes -sha1 -days 365 -key ns.example.com.key -out ns.example.com.crt

=> Saisissez les informations demandées, et surtout attention pour Common Name (eg, YOUR name) [] :tu dois mettre le domaine pleinement qualifié, càd ns.example.com car sinon le certificat SSL ne sera pas valide.

Ensuite aller dans /etc/apache2/sites-availables/ :

On va créer un virtualhost SSL du site, càd du nom du serveur en se basant sur le fichier modèle default-ssl. Donc copier le fichier default-ssl et renommer la copie en domaine-pleinement-qualifié-ssl :

Je te donnerais la suite demain… :hand:

Salut,

je m’en doutais que j’été complètement à côté de la plaque :dance:

Je vais essayé de me débrouiller un peux avec ce que tu m’a montré en attendent la fin de ton tuto

Merci fluo :023

J’ai modifié mon 1er post car j’avais oublié l’étape de création du certificat SSL auto-signé.

Je continue.

Dans le fichier ns.example.com-ssl, tu vas mettre les informations d’un virtualhost classique, en précisant en plus le chemin de la clé privé et le chemin du certificat ssl auto-signé, comme ceci :


<VirtualHost *:443>
        ServerAdmin webmaster@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www
        AddType application/x-httpd-php .html

        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
       
        <Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
		...

#   A self-signed (snakeoil) certificate can be created by installing
#   the ssl-cert package. See
#   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
#   If both key and certificate are stored in the same file, only the
#   SSLCertificateFile directive is needed.
SSLCertificateFile    /etc/apache2/ssl/ns.example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/ns.example.com.key

=> 2 remarques sur ce fichier :

  • dans <VirtualHost *:443>, j’ai mis un étoile * à la place de default
  • comme c’est pour le nom du serveur, càd ns.example.com, alors il faut laisser le DocumentRoot par defaut, càd /var/www, et idem pour la 2ème section de Directory qui doit rester sur /var/www.

Ensuite on revient en console, et on tape en root :

a2ensite ns.example.com-ssl
/etc/init.d/apache2 reload

Puis taper (on te redemandera de taper la passe phrase de la clé privé RSA) :

root@localhost:/home/guest# /etc/init.d/apache2 restart

Starting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Apache/2.2.16 mod_ssl/2.2.16 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server localhost:443 (RSA)
Enter pass phrase: (tu tapes la pass phrase)

OK: Pass Phrase Dialog successful.
.

Ensuite dans Firefox tape ns.example.com, et si firefox affiche :

[quote]…
Détails techniques
ns.example.com utilise un certificat de sécurité invalide.

Le certificat n’est pas sûr car il est auto-signé.

(Code d’erreur : sec_error_untrusted_issuer)
…[/quote]
=>alors, c’est bon. Pour Chrome, c’est normal lorsque tu as un https rouge barrée car c’est du auto-signé.

Par contre si Firefox affiche :

[quote]…
Détails techniques
ns.example.com utilise un certificat de sécurité invalide.

Le certificat n’est pas sûr car il est auto-signé.
Le certificat n’est valide que pour autre_domaine_pleinement_qualifié.

(Code d’erreur : sec_error_untrusted_issuer)

[/quote]
=> alors c’est que t’as fais une erreur lors de la création du certificat SSL pour le domaine pleinement qualifié.

Et voilà.

Salut Fluo !!

C’est nikel ça marche à la perfection :041
Merci beaucoup pour tout ton aide
:023

Salut,

Ne captes tu donc pas les effluves du Wiki ? :clap: :clap: