Comment se connecter à une base de données MySQL distante via SSL en utilisant Play Framework?
Le déploiement de Jouer à des applications dans des environnements distribués, soutenu par une base de données MySQL distante. Plus précisément, les applications sont hébergées sur heroku, et la base de données est sur Amazon RDS (si cela s'applique vraiment à quelque distance de connexion de base de données). Depuis la base de données n'est pas seulement sur localhost, je préfère que la distance de connexion MySQL est faite via le protocole SSL pour la sécurité.
Donné un certificat d'autorité de certification de confiance, comment puis-je configurer un Jeu application pour vous connecter au serveur MySQL via SSL uniquement si l'hôte certificat peut être vérifiée?
Assumer ce que l'actuelle configuration de base de données:
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://url.to.database/test_db"
db.default.user=root
db.default.password="...."
source d'informationauteur Michael Zajac
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez déjà le certificat d'autorité de certification de configuration pour le serveur MySQL (ce qui est le cas lors de l'utilisation d'Amazon RDS), il y a quelques étapes à faire ce travail.
Tout d'abord, le certificat d'autorité de certification doit être importé dans un Java fichier de magasin de clés à l'aide de keytoolqui est livré avec le JDK. Le fichier de clés dans ce cas, contient tous les certificats d'autorité de certification, nous voulons faire confiance. Pour Amazon RDS, le CA cert peut être trouvé ici. Avec
mysql-ssl-ca-cert.pem
dans votre répertoire de travail, vous pouvez exécuter la commande suivante:Qui permettra de créer un nouveau Java fichier de magasin de clés appelé
truststore.jks
après vous invitant à entrer un mot de passe du fichier de clés et vous demandant si vous souhaitez faire confiance au certificat (oui, vous). Si vous avez déjà un fichier truststore, vous pouvez exécuter la même commande, en remplaçanttruststore.jks
avec le chemin d'accès à votre fichier de clés existant (vous serez alors invité à entrer le mot de passe du fichier de clés existant, au lieu de cela). J'ai l'habitude de placertruststore.jks
dans monconf
répertoire.Deuxième, en
application.conf
vous avez besoin d'ajouter un peu de JDBC URL paramètres de la base de données URL:verifyServerCertificate=true
- Refuser de se connecter si l'hôte de certificat ne peut pas être vérifiée.useSSL=true
- Se connecter en utilisant SSL.requireSSL=true
- Refuser de se connecter si le serveur MySQL ne prend pas en charge SSL.Par exemple, si votre base de données actuelle de l'URL est:
Alors il devrait maintenant être:
Enfin, il y a quelques options de ligne de commande qui doivent être transmis lors du démarrage du Jeu serveur pour configurer le truststore MySQL-Connector/J à utiliser. En supposant que ma
truststore.jks
fichier est situé dans leconf
répertoire, et le mot de passe estpassword
je voudrais commencer mon serveur (en dev mode) comme ceci:En plus de cela, j'aime aussi assurez-vous qu'il est impossible de se connecter à la base de données sans l'aide de SSL, juste au cas où les options en quelque sorte avoir foiré au niveau de l'application. Par exemple, si
db.default.user=root
puis une fois connecté enroot
dans le serveur MySQL, exécutez les requêtes suivantes: