Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara terhubung ke database MySQL jarak jauh melalui SSL menggunakan Play Framework?

Dengan asumsi Anda sudah memiliki penyiapan sertifikat CA untuk server MySQL (yang terjadi saat menggunakan Amazon RDS), ada beberapa langkah untuk membuatnya berfungsi.

Pertama, sertifikat CA harus diimpor ke file Java KeyStore menggunakan alat kunci , yang datang dengan JDK. KeyStore dalam hal ini akan berisi semua sertifikat CA yang ingin kita percayai. Untuk Amazon RDS, sertifikat CA dapat ditemukan di sini . Dengan mysql-ssl-ca-cert.pem di direktori kerja Anda, Anda dapat menjalankan perintah berikut:

keytool -import -alias mysqlServerCACert -file mysql-ssl-ca-cert.pem -keystore truststore.jks

Yang akan membuat file Java KeyStore baru bernama truststore.jks setelah meminta Anda memasukkan kata sandi KeyStore dan menanyakan apakah Anda ingin memercayai sertifikat tersebut (ya, Anda percaya). Jika Anda sudah memiliki file truststore, Anda dapat menjalankan perintah yang sama, menggantikan truststore.jks dengan jalur ke KeyStore yang ada (Anda kemudian akan dimintai kata sandi dari KeyStore yang ada). Saya biasanya menempatkan truststore.jks di conf my saya direktori.

Kedua, di application.conf Anda perlu menambahkan beberapa parameter URL JDBC ke URL database:

verifyServerCertificate=true - Menolak untuk terhubung jika sertifikat host tidak dapat diverifikasi.

useSSL=true - Terhubung menggunakan SSL.

requireSSL=true - Menolak untuk terhubung jika server MySQL tidak mendukung SSL.

Misalnya, jika URL basis data Anda saat ini adalah:

db.default.url="jdbc:mysql://url.to.database/test_db"

Maka sekarang seharusnya:

db.default.url="jdbc:mysql://url.to.database/test_db?verifyServerCertificate=true&useSSL=true&requireSSL=true"

Terakhir, ada beberapa opsi baris perintah yang perlu dilewati saat memulai server Play untuk mengonfigurasi truststore yang akan digunakan MySQL-Connector/J. Dengan asumsi truststore.jks saya file terletak di conf direktori, dan kata sandinya adalah password , saya akan memulai server saya (dalam mode dev) seperti ini:

activator run -Djavax.net.ssl.trustStore="conf/truststore.jks" -Djavax.net.ssl.trustStorePassword="password"

Selain itu, saya juga ingin memastikan bahwa tidak mungkin untuk terhubung ke database tanpa menggunakan SSL, untuk berjaga-jaga jika opsinya entah bagaimana kacau di tingkat aplikasi. Misalnya jika db.default.user=root , lalu saat login sebagai root di server MySQL, jalankan kueri berikut:

GRANT USAGE ON *.* TO 'root'@'%' REQUIRE SSL;
FLUSH PRIVILEGES;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String kueri MySQL berisi:

  2. phpMyAdmin - tidak dapat terhubung - pengaturan tidak valid - sejak saya menambahkan kata sandi root - terkunci

  3. Cara Mendapatkan Hari Terakhir Bulan Ini di MySQL

  4. Cara Menyalin Tabel di MySQL

  5. Batasi nomor halaman pagination