WampServer

Apache, PHP, MySQL on Windows 

 
  • Accueil forum
  • Retour à WampServer
  • presentation
  • Download
  • Addons
  • Formations
  • Alter Way

 
Voir le sujet: Précédent•Suivant
Aller à : Liste des Forums•Liste des messages•Nouvelle discussion•Recherche•Connexion•Imprimer la vue
Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Artemus24 (---.70.16.109.rev.sfr.net)
Date: 30 January 2023 à 12:47

Salut Otomatic.

Suite à une mise à jour de Wampserver, je n'arrive plus à entrer dans PhpMyAdmin.
Voici le message d'erreur, que je ne connaissais pas, dans "Mysql_Error.log" :
[Note] [MY-010914] [Server] Mauvais 'handshake'
En faisant une recherche sur le net, sans avoir trouvé la solution, l'erreur provient du protocole SSL.

J'ai les certificats auto généré par MySql dans mon répertoire "/data", qui sont : ca.pem, ca_key.pem, client-cert.pem, client-key.pem, server-cert.pem, server-key.pem.

Avant la mise à jour, je les avais créé afin d'augmenter le niveau de sécurité et je n'avais pas ce problème.
J'ai complétement oublié que je devais les garder. Je ne me souviens plus comment j'ai fait pour créer ces certificats pem.
J'ai pourtant essayé avec "mysql_ssl_rsa_setup", mais j'ai toujours le même problème.

Pour avoir accès à nouveau à PhpMyAdmin, je mets "false" dans la ligne suivante :
$cfg['Servers'][$i]['ssl_verify'] = true;
J'entre bien dans PhpMyAdmin avec ce message d'avertissement "connexion au serveur : SSL est utilisé avec vérification désactivée".
Mais ce n'est pas ce que je veux.

Sais-tu comment faire pour recréer ces certificats pem ?

Si en ligne de commande j'exécute ceci :
@echo off

setlocal enableDelayedExpansion

chcp 1252 > nul

set PATH=.;%WAMPSERVER%/bin/mysql/%MYSQL%/bin/;%PATH%

SET FIC=20.Test_SSL.sql

@echo.
mysql  --host=localhost  --user=root --password=root  --verbose  --force  ^
         --ssl-mode=verify_identity  ^
           --ssl-ca=F:/Wamp/bin/apache/apache2.4.55/conf/certificat/Mysql/ca.pem  ^
       --ssl-capath=F:/Wamp/bin/apache/apache2.4.55/conf/certificat/Mysql  ^
         --ssl-cert=F:/Wamp/bin/apache/apache2.4.55/conf/certificat/Mysql/client-cert.pem  ^
          --ssl-key=F:/Wamp/bin/apache/apache2.4.55/conf/certificat/Mysql/client-key.pem  ^
       < %FIC%
@echo.
pause
exit
J'ai le message d'erreur suivant :
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2026 (HY000): SSL connection error: error:1416F086confused smileySL routines:tls_process_server_certificate:certificate verify failed

Appuyez sur une touche pour continuer...
Si dans ce même batch windows, à la place de "--ssl-mode=verify_identity", je mets "--ssl-mode=verify_ca", j'entre bien sans problème dans MySql.
C'est ce niveau d'identification que je n'arrive pas à résoudre.

Cordialement.
Artemus24.
@+

----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon site : [www.jcz.fr]

Options: Répondre•Citer ce Message
Re: Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Otomatic (Modérateur)
Date: 30 January 2023 à 14:14

Bonjour Artemus24,

Là, tu me poses une colle : je n'en sais rien. Je n'utilise pas ssl pour MySQL.

> certificate verify failed
Ne serais-ce pas parce que le certificat est auto signé ?

------------------------------------------------------------------------------------------------------------
Wampserver 3.3.0 32 bit - Apache 2.4.54.2 - PHP 8.2.0…7.4.33 - MySQL 5.7.40 - MariaDB 10.5.13/10.6.5
Wampserver 3.3.0 64 bit - Apache 2.4.54.2 - PHP 8.2.0…7.4.33 - MySQL 5.7.40/8.0.31 - MariaDB 10.5.17/10.10.2
PhPMyadmin 5.2.0 - MysqlDumper 1.24.5
on W10 Pro 64 bit
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons
« Ce n'est pas parce qu'ils sont nombreux à avoir tort, qu'ils ont forcément raison. Coluche »
« It's not because they are many to be wrong, they are necessarily right. Coluche »

Options: Répondre•Citer ce Message
Re: Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Artemus24 (---.70.16.109.rev.sfr.net)
Date: 30 January 2023 à 18:25

Salut Otomatic.

Je ne maitrise pas bien le sujet, même si je sais créer avec openssl des certificats auto signée.
Je sais aussi créer des certificats Let's Encrypt.

Citation
Otomatic
> Échec de la vérification du certificat
Ne serait-ce pas parce que le certificat est auto signé ?
Je découvre que l'on peut tester le SSL lors d'une connexion. Et voici l'extrait que j'obtiens :
---
SSL handshake has read 4892 bytes and written 377 bytes
Verification error: self-signed certificate in certificate chain
Je n'ai pas tout mis car c'est long et n'apporte rien à la compréhension du problème.
Je constate que le certificat en question est celui qui se trouve dans Apache et non celui produit par MySql.
A priori, le certificat est rejeté car auto-signé, ce que je crois comprendre.

Ce qui signifie qu'il y a eu du changement suite à la mise à jour.
Cela faisait au moins 1 an que je n'ai pas fait de mise à jour, d'où mon problème.

D'où ma question : comment vais-je faire pour créer un certificat qui soit compatible avec ce que j'essaye de faire ?

Il me faut des certificats pour Apache et aussi pour MySql.

Dois-je comprendre que ce sont les mêmes certificats pour Apache et pour MySql ? Ce point n'est pas très clair.

Si je fais l'inventaire des certificats, j'ai besoin d'avoir :

pour apache :
--> ca.crt
--> server.key
--> server.crt
--> client.key
--> client.crt

pour mysql :
--> ca.pem
--> server-key.pem
--> server-cert.pem
--> client-key.pem
--> client-cert.pem

En plus, mais je pense que cela n'entre pas dans la gestion SSL, puisque RSA j'ai aussi besoin :
--> private_key.pem
--> public_key.pem

Et enfin, des certificats pour windows et les navigateurs, comme Mozilla Firefox :
--> ca.crt
--> client.p12

Et le tout non auto-signé.

Pourquoi dois-je utiliser un .pem aulieu d'un .crt ? Je n'ai pas compris cette différence.

Je suppose que .p12 et .pem désigne le même type de certificat.

En admettant que ceux d'Apache et ceux de Mysql sont les mêmes, j'ai besoin de sept certificats.

Comme vais-je me les procurer chez Let's Encrypt ?

Je trouve que ça devient compliqué !!!

Cordialement.
Artemus24.
@+

----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon site : [www.jcz.fr]



Modifie 2 fois. Derniere modification le 30/01/2023 à 18:29 par Artemus24.

Options: Répondre•Citer ce Message
Re: Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Otomatic (Modérateur)
Date: 31 January 2023 à 08:56

Bonjour,

> Comme vais-je me les procurer chez Let's Encrypt ?
A priori, Let's Encrypt, ce sont des certificats pour des sites — nom de domaine — pas pour MySQL.

Avec openssl intégré à Apache, on peut créer tous les types voulus : crt, pem, p12, key, etc.
Tu l'expliques sur ton site et je le fais dans : Wampserver https SSL

Documentation MySQL : 6.3 Using Encrypted Connections
et particulièrement 6.3.3 Creating SSL and RSA Certificates and Keys

Je ne peut pas t'en dire plus.
On peut lire dans la doc :

Note

Host name identity verification with VERIFY_IDENTITY does not work with self-signed certificates that are created automatically by the server or manually using mysql_ssl_rsa_setup (see Section 6.3.3.1, “Creating SSL and RSA Certificates and Keys using MySQL”). Such self-signed certificates do not contain the server name as the Common Name value.

------------------------------------------------------------------------------------------------------------
Wampserver 3.3.0 32 bit - Apache 2.4.54.2 - PHP 8.2.0…7.4.33 - MySQL 5.7.40 - MariaDB 10.5.13/10.6.5
Wampserver 3.3.0 64 bit - Apache 2.4.54.2 - PHP 8.2.0…7.4.33 - MySQL 5.7.40/8.0.31 - MariaDB 10.5.17/10.10.2
PhPMyadmin 5.2.0 - MysqlDumper 1.24.5
on W10 Pro 64 bit
Documentation Apache - Documentation PHP - Documentation MySQL - Wampserver install files & addons
« Ce n'est pas parce qu'ils sont nombreux à avoir tort, qu'ils ont forcément raison. Coluche »
« It's not because they are many to be wrong, they are necessarily right. Coluche »



Modifie 1 fois. Derniere modification le 31/01/2023 à 10:49 par Otomatic.

Options: Répondre•Citer ce Message
Re: Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Artemus24 (---.70.16.109.rev.sfr.net)
Date: 31 January 2023 à 18:29

Salut Otomatic.

Il est difficile de se remettre dans la configuration Apache & MySql que j'avais faite, il y a déjà plusieurs années.

Je renouvelle régulièrement chez Let's Encrypt mon certificat.
Sauf que celui-ci se décompose en "domaine.fr-chain.pem" et en "domaine.fr-key.pem".
Mon niveau de sécurité va jusqu'à "--ssl-mode=verify_ca" sans problème.
Après quelque recherche, je suis tombé sur le même commentaire MySql que toi.

Hormis le fait de créer des certificats pouvant passer le test "--ssl-mode=verify_identity", j'ai un autre problème que je n'ai jamais pu résoudre.
Dans Apache, j'ai mis "SSLVerifyClient Require", où a chaque fois que j'entre dans mon site, on me demande de sélectionner un certificat, aussi bien sur un certificat "openssl" ou "let's Encrypt".
Par contre, si je mets "none" au lieu de "require", aucune demande n'est faite. Je n'ai pas trouvé comment résoudre ce problème.
Je n'ai pas bien compris ce que signifie le niveau de vérification client dans Apache et si la demande était normale.
Je m'attendais à aucune demande de sélection !


Est-ce que la création des certificats "client" et "server" peuvent se faire à partir du certificat let's encrypt ?

En plus de cela, j'ai aussi des problèmes réseaux de chez SFR.
Plus d'IPv6 depuis vendredi 27 janvier 2023.
Beaucoup de pertes réseaux, plus que d'habitude.
Et de fort ralentissement du débit !

Cordialement.
Artemus24.
@+

----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon site : [www.jcz.fr]



Modifie 1 fois. Derniere modification le 01/02/2023 à 15:36 par Artemus24.

Options: Répondre•Citer ce Message
Re: Problème d'accès en SSL à PhpMyAdmin !
Envoyé par: Artemus24 (---.176.1.93.rev.sfr.net)
Date: 04 March 2023 à 09:53

Salut Otomatic.

Depuis fort longtemps, je dispose d'un certificat Let's Encrypt pour mon site Web.
Ce certificat est utilisé dans apache, afin de valider un nom de domaine.
Cela permet d'échanger dans le protocole HTTPS (port 443) et d'obtenir un cadenas.

J'ai voulu tester l'identification par client avec un certificat Let's Encrypt.
J'ai échangé dans le forum Let's Encrypt à ce sujet, sans succès.
Ils ont bien un certificat client, mais je ne sais pour quelle raison, celui-ci ne fonctionne pas.

Donc, je ne peux pas utiliser les certificats Let's Encrypt pour ce genre d'authentification.

Je suis obligé de créer un certificat OpenSSL de type client/serveur.
Ce certificat client est mis dans le magasin "personnel" (ou "my" en anglais).
Ca fonctionne au niveau d'apache quand je le teste.
Je ne dois pas bien l'utiliser car j'ai découvert un problème au sujet de l'identification.
J'ai créé un certificat Ca auto-signé, ainsi que deux certificats intermédiaires.
L'un est fait pour le site localhost et l'autre sur "mon-site-un".
Quand j'accède à "localhost", le certificat client de "mon-site-un" devrait être rejeté, or ce n'est pas le cas.
Et vice-versa. Tout se passe comme si le certificat Ca était le seul à être validé.
Pour ce qui est d'apache, je me suis arrêté là.

J'essaye d'introduire les certificats au niveau de MySql.
Le premier problème que j'ai rencontré sur le net, est de trouver les informations sur les connexions SSL pour accéder à mes bases de données.
Pour le PDO ce fut facile. Pour le Mysqli un peu plus compliqué car les exemples ne fonctionnaient pas, mais je suis arrivé à le faire.
Pour ODBC seul, ce fut difficile car j'ai compris par la suite que je n'avais pas la bonne version ODBC.
J'ai installé la dernière version et j'avais un autre message d'erreur lié au certificat que j'ai pu résoudre par la suite.
Mais dans le cas ODBC / PDO, je n'arrive pas à comprendre pourquoi seul l'accès par ODBC valide le SSL.
Or dans les options du PDO, quoi que je mettes, il n'en tiens pas compte.

Est-ce que tu as un exemple de comment déclarer la connexion ODBC / PDO sachant que la connexion seul ODBC fonctionne parfaitement ?

Ensuite, je me suis attaqué à la création des certificats :
--> ca.pem
--> client-cert.pem
--> client-key.pem
--> server-cert.pem
--> server-key.pem

ainsi que ceux sur les password :
--> private_key.pem
--> public_key.pem

Le gros problème que j'ai rencontré est l'identification sachant que j'ai un certificat CA disons racine, et un certificat intermédiaire.
Je ne savais pas résoudre ce problème jusqu'à ce que j'arrive à comprendre que je devais créer une chaine de certification.
Le ca.pem ne contient pas que le certificat racine, mais aussi le certificat intermédiaire.
Et en plus, il faut respecter un ordre sinon ce ne fonctionne pas.

En résolvant ce problème, j'ai découvert que je n'avais plus le message "self-signed" dans les avertissements de MySql.
Et pourtant, ces certificats sont bien auto-signé puisque créé avec OpenSSL.

Quand j'ai pu résoudre ce problème de validité de la chaine de certification, le test sur "mode_ssl=verify_identity" a été résolu de lui-même.
Ce mode fonctionne même si le certificat est auto-signé, mais il faut lui indiquer le nom de l'hôte.

Sauf qu'à ce niveau de mes tests, j'avais deux types de certificats, ceux pour Apache et ceux pour Mysql.
J'ai fait en sorte de ne pas casser Apache pour résoudre Mysql.
J'ai dû fusionner ces tous ces certificats afin d'être en conformité.
Ceux d'apache deviennent :
--> ca-chain.pem
--> server-cert.pem
--> server-key.pem
et ceux de MySql deviennent :
--> ca-chain.pem
--> client-cert.pem
--> client-key.pem
--> server-cert.pem
--> server-key.pem

Il me restait à résoudre ceux-là :
--> private_key.pem
--> public_key.pem

Pour la clef privée des password, j'ai pris la clef privée du certificat client.
Puis j'ai appliqué la création du certificat PBC (Plaintext Block Chaining) pour obtenir la clef publique.

En conclusion, ce fut laborieux, à cause essentiellement des mauvaises informations que j'ai pu glaner sur le net.
Il y a très peu d'exemples, et en plus, elles sont obsolètes pour la plupart.

Comme je n'ai pas la possibilité d'avoir un certificat officiel gratuit comme Let's Encrypt, j'ai dû utiliser deux certificats.
Un certificat (DV) au niveau d'apache et donc visible au niveau d'internet, Let's Encrypt.
L'autre certificat OpenSSL, au niveau Mysql, de type client/serveur.

Quand j'entre maintenant dans PhpMySql, j'ai bien "Connexion au serveur : SSL est utilisé".
Au niveau du "status" sous mysql, les échanges se font en SSL avec le protocole TLSv1.3 comme je l'ai demandé.
Le "mode_ssl=verify_identity" est activé et fonctionne puisque l'identification se fait bien au niveau de l'hôte.

Je ne peux pas forcer le mode SSL dans MySql car je teste un forum phpbb qui n'autorise pas le SSL, sauf si je bidouille dans les connexions.

Je voulais te faire un compte-rendu de mes déboires et de mes succès.
Le mode SSL est opérationnel aussi bien en Apache, qu'en Mysql.
Je vas devenir un spécialiste des certificats winking smiley

Cordialement.
Artemus24.
@+

----------------------------------------------------------------------------------------------------------------------------------------------------------------
Mon site : [www.jcz.fr]

Options: Répondre•Citer ce Message


Aller à : Liste des Forums•Liste des messages•Recherche•Connexion
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.
Cliquer ici pour se connecter

design by jidePowered by Alter Way get firefoxget PHP