Les environnements MySQL, MariaDB et Percona sur le Stack Harbor PaaS supportent un add-on SSL/TLS intégré qui active le chiffrement en transit pour les connexions base de données. Une fois installé, tout se passe automatiquement — génération du certificat, chiffrement, authentification, déchiffrement et vérification. Vous vous connectez sur un canal chiffré sans changement côté application, à part un drapeau.
L’add-on peut être installé sur les nœuds MySQL, MariaDB, Percona et ProxySQL. Pour les topologies en grappe avec répartition ProxySQL, installez l’add-on sur les deux paliers.
Installer l’add-on
- Dans le tableau de bord, ouvrez le palier base de données.
- Allez à Add-Ons.
- Cliquez Install sur la carte SSL/TLS Encrypted Connection.
- Sélectionnez l’environnement cible et les groupes de nœuds. Pour les grappes avec ProxySQL, sélectionnez le palier base de données et le palier ProxySQL.
- Cliquez Install.
La reconfiguration prend environ une minute. Le démon base de données est redémarré une fois avec la nouvelle configuration TLS.
Emplacement des certificats
- Les certificats sont générés par l’utilitaire
/usr/local/sbin/selfcertgende la plateforme. - Ils sont auto-signés et émis pour le nom d’hôte de chaque nœud — chaque nœud a sa propre paire. Au moment de vous authentifier, utilisez les certificats correspondant au nœud auquel vous vous connectez.
- Les certificats serveur et client sont stockés sous
/var/lib/stackharbor/keys/SSL-TLS/, avec deux sous-dossiers :server/— certificats serveur pour la terminaison TLS côté base de donnéesclient/— certificats client téléchargeables pour authentification mutuelle
Le raccourci keys dans le gestionnaire de fichiers pointe au même endroit.
Configuration MySQL / MariaDB / Percona
L’add-on écrit ses paramètres dans un fichier dédié /etc/mysql/conf.d/ssl-config.cnf :
[mysqld]
ssl_cert=/var/lib/stackharbor/keys/SSL-TLS/server/server.crt
ssl_key=/var/lib/stackharbor/keys/SSL-TLS/server/server.key
ssl-cipher=ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA
#require_secure_transport=ON
La directive require_secure_transport est commentée par défaut — le serveur accepte les connexions en clair et TLS. Décommentez-la pour refuser toute connexion en clair.
Configuration ProxySQL
Dans les topologies en grappe avec ProxySQL, l’add-on positionne deux variables sur chaque nœud ProxySQL :
mysql-have_sslàtrue— active SSL sur les connexions frontend des clients vers ProxySQL.use_sslà1dansmysql_servers— indique à ProxySQL que les nœuds MySQL backend acceptent aussi SSL.
Le SQL équivalent que l’add-on exécute sur chaque nœud :
UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-have_ssl';
LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK;
UPDATE mysql_servers SET use_ssl=1 WHERE port=3306;
LOAD MYSQL VARIABLES TO RUNTIME; LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK;
Connexion d’un client avec SSL
Le chiffrement en transit (côté serveur) est actif immédiatement après installation. Testez depuis n’importe quel client MySQL :
mysql --ssl-mode=required -h <host> -P <port> -u <user> -p
Pour le client MariaDB, le drapeau équivalent est --ssl au lieu de --ssl-mode=required.
Une fois connecté, exécutez status et vérifiez la ligne SSL dans la sortie pour confirmer que la connexion est chiffrée.
Exiger des certificats client (TLS mutuel)
Pour exiger que le client présente aussi un certificat — TLS mutuel — modifiez le compte utilisateur :
FLUSH PRIVILEGES;
ALTER USER '<user>'@'%' REQUIRE X509;
ALTER USER '<user>'@'localhost' REQUIRE X509;
FLUSH PRIVILEGES;
Pour vérifier en plus que le Common Name du certificat client correspond au nom d’utilisateur :
FLUSH PRIVILEGES;
ALTER USER '<user>'@'%' REQUIRE SUBJECT 'CN=<user>';
ALTER USER '<user>'@'localhost' REQUIRE SUBJECT 'CN=<user>';
FLUSH PRIVILEGES;
Vous pouvez aussi supprimer le mot de passe et authentifier exclusivement par certificat via ALTER USER ... IDENTIFIED WITH ....
Téléchargez les certificats client depuis le dossier /var/lib/stackharbor/keys/SSL-TLS/client/ du nœud correspondant et fournissez-les à votre client (--ssl-cert, --ssl-key, --ssl-ca).
Réémettre et désinstaller
L’add-on ajoute un bouton Re-issue certificates sous l’onglet Add-Ons du palier — utile si une clé est compromise ou accidentellement supprimée. Uninstall dans le menu débordement de l’add-on retire la configuration et les certificats générés.