IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[Apache 2.4.39]Certificat client et connexion SSL !


Sujet :

Apache

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut [Apache 2.4.39]Certificat client et connexion SSL !
    Salut à tous.

    Je suis sous Apache 2.4.39.

    Jusqu'à présent, je n'ai utilisé que la connexion SSL de type certificat serveur dans mon WampServer.
    Un certificat SSL de type CA dans le navigateur "Google Chrome" et j'arrive à me connecter sans problème.
    Le même certificat SSL de type CA et le certificat serveur "localhost" dans le virtualHost "localhost" résolvent le problème.
    Et ça fonctionne !

    Maintenant, j'aimerai passer à un certificat SSL de type client.
    J'aimerai mettre autre chose dans SSLVerifyClient que "none" !
    Si je mets "require", je n'arrive pas à obtenir une connexion avec authentification.
    Voici le message d'anomalie que j'obtiens quand je me connecte à "ht tp://localhost" :
    Forbidden
    You don't have permission to access / on this server.
    Reason: Cannot perform Post-Handshake Authentication.

    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
    J'ai cherché d'où provenait cette erreur, mais sans succès jusqu'à présent.

    Voici ce que j'ai dans le virtualhost "localhost", puisque je fais mes tests sur ce site local :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    	SSLEngine on
    	SSLCertificateFile    "${SRVROOT}/conf/Certificat/Localhost/localhost.crt"
    	SSLCertificateKeyFile "${SRVROOT}/conf/Certificat/Localhost/localhost.key"
    #
    	SSLCACertificatePath  "${SRVROOT}/conf/Certificat/Ca"
    	SSLCACertificateFile  "${SRVROOT}/conf/Certificat/Ca/Ca.crt"
    #
    	<Directory />
    		SSLVerifyClient optional
    		SSLVerifyDepth  10
    		SSLOptions +StdEnvVars
    #
    		Options -Indexes +FollowSymLinks +MultiViews
    		AllowOverride none
    		Require local
    	</Directory>
    J'ai juste ajouté/modifié les lignes 9 et 10

    Et la déclarative SSL, un peu plus haut dans le fichier "httpd.conf" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # ====================================== #
    #     Module socache_shmcb               #
    # ====================================== #
     
    LoadModule socache_shmcb_module        modules/mod_socache_shmcb.so
     
    <IfModule socache_shmcb_module>
    #	SSLUseStapling                  On
    #	SSLStaplingCache                "shmcb:${repertoire}/logs/ssl_stapling(32768)"
    #	SSLStaplingStandardCacheTimeout 3600
    #	SSLStaplingErrorCacheTimeout    600
    #
    	SSLSessionCache                 "shmcb:${repertoire}/logs/ssl_scache(512000)"
    	SSLSessionCacheTimeout          300
    </IfModule>
     
    # ====================================== #
    #     Module SSL                         #
    # ====================================== #
     
    LoadModule ssl_module                  modules/mod_ssl.so
     
    <IfModule ssl_module>
    	# -------------------- #
    	# Strong SSL protocols #
    	# -------------------- #
    #
    	SSLRandomSeed startup builtin
    	SSLRandomSeed connect builtin
    	SSLPassPhraseDialog   builtin
    #
    	SSLProtocol +All -SSLv3 -SSLv2 -TLSv1 -TLSv1.1
    	SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
    #
    	SSLHonorCipherOrder On
    	SSLSessionTickets   Off
    	SSLCompression      Off
    </IfModule>
    J'ai créé un certificat "localhost" de type client dont l'extension est "p12" (format PKCS#12).
    Sauf que je ne suis pas sûr de ce que j'ai mis au niveau des déclarative.

    Que dois-je mettre comme CN (common name) ?
    Pour le certificat serveur, j'ai mis "localhost" et cela m'a semblé logique de le faire.
    Mais pour le certificat client, je ne sais pas si je dois mettre le nom de l'utilisateur, le nom du "o" (organization) qui est celui du certificat CA ou autre chose ?

    Si vous avez fait cela, j'aimerai un exemple de configuration (openssl.cnf) et un exemple de la commande openssl pour créer le certificat "p12" ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut à tous.

    J'ai perdu beaucoup de temps, croyant que le problème venait de ma configuration.
    Et bien non, Apache sait traiter le protocole TLSv1.3 mais pas les navigateurs Google Chrome et Mozilla Firefox.
    Le problème a été résolu en passant le protocole à TLSv1.2.

    Maintenant, je rencontre un autre problème concernant la configuration SSL dans MySql et dans PhpMyAdmin.
    Voici la configuration dans MySql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ssl-ca     = f:/Wamp/bin/apache/apache2.4.39/conf/certificat/ca/ca.crt
    ssl-capath = f:/Wamp/bin/apache/apache2.4.39/conf/certificat/ca/
    ssl-cert   = f:/Wamp/bin/apache/apache2.4.39/conf/certificat/Artemus/artemus.crt
    ssl-key    = f:/Wamp/bin/apache/apache2.4.39/conf/certificat/Artemus/artemus.key
    ssl-cipher = DHE-RSA-AES128-GCM-SHA256
    Et voici la configuration dans le fichier "config.inc.php" de phpmyadmin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $cfg['Servers'][$i]['ssl']          = true;
    $cfg['Servers'][$i]['ssl_key']      = 'F:/Wamp/bin/apache/apache2.4.39/conf/certificat/Artemus/artemus.key';
    $cfg['Servers'][$i]['ssl_cert']     = 'F:/Wamp/bin/apache/apache2.4.39/conf/certificat/Artemus/artemus.crt';
     
    $cfg['Servers'][$i]['ssl_ca']       = 'F:/Wamp/bin/apache/apache2.4.39/conf/certificat/ca/ca.crt';
    $cfg['Servers'][$i]['ssl_ca_path']  = 'F:/Wamp/bin/apache/apache2.4.39/conf/certificat/ca/';
     
    $cfg['Servers'][$i]['ssl_ciphers']  = 'DHE-RSA-AES128-GCM-SHA256';
    $cfg['Servers'][$i]['ssl_verify']   = true;
    Jusqu'à présent, le mode SSL entre MySql et PhpMyAdmin fonctionnait correctement.
    Sauf qu'en bidouillant dans mes certificats CA, Serveur et Client, j'obtiens maintenant cette erreur dans PhpMyAdmin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SSL operation failed with code 1. OpenSSL Error messages: error:14094413:SSL routines:ssl3_read_bytes:sslv3 alert unsupported certificate
    Je ne comprends pas la nature de ce problème ?

    D'une part, je n'utilise pas le protocole SSLv3, puisque je l'ai désactivé dans Apache.
    Mais comme il s'agit de PhpMyAdmin, voire aussi de MySql, je ne sais pas trop ou chercher.

    D'autre part, les certificats fonctionnent correctement dans Apache, puisque j'utilise les mêmes certificats sur d'autres sites, en local.
    Si j'accède en tapant "ht tps://localhost" dans le navigateur Google Chrome, celui-ci me propose bien le certificat client, que j'accepte, et je vois apparaître ma page d'accueil.

    Donc, je ne comprends pas ce que signifie exactement "le certificat n'est pas pris en charge" ???

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut à tous.

    J'ai enfin compris mon erreur.

    Les déclaratives dans le fichier My.ini concernant SSL sont correctes. Pourquoi ?
    Parce que, ce sont d'une part le CA et d'autre part le certificat Serveur.

    Les déclaratives dans le fichier config.inc.php concernant le SSL ne sont pas correctes. Pourquoi ?
    Parce que j'ai mis la même chose, que dans le fichier my.ini, ce qui est faux !
    Je dois mettre le même CA, mais le certificat client.

    Comme je suis en local sur mon ordinateur, je peux me permettre de faire pointer le certificat client vers le répertoire où il se trouve, c'est-à-dire là où je l'ai créé.
    Dans la réalité, le certificat client se trouve normalement dans le magasin "personnel" de mon navigateur Google Chrome (ou dans le navigateur Mozilla Chrome).
    Du coup, je dois posséder une copie de la clef public et du certificat client dans un répertoire qui sera lié à PhpMyAdmin.

    Je vais mettre cela sur le compte de la fatigue, vu l'heure à laquelle j'écris ce message.

    Bonne nuit à tout le monde.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Apache HTTPClient : Connexion SSL via certificat PKI
    Par mathias.deshayes dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 08/06/2011, 11h42
  2. Réponses: 1
    Dernier message: 26/08/2009, 21h12
  3. Detection erreur 403.7 (certificat client requis ) ASP.Net ou c#
    Par mr_mitchou dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 27/02/2008, 14h33
  4. Client lourd, connexion db, login, password et sécurité ?
    Par elitost dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/09/2007, 17h04
  5. certificats clients sous IIS 6
    Par fredoche dans le forum ASP
    Réponses: 4
    Dernier message: 03/08/2006, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo