Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memperbarui aplikasi untuk terhubung ke instance MySQL DB menggunakan sertifikat baru SSL/TLS
Sejak 13 Januari 2023, Amazon RDS telah menerbitkan sertifikat Otoritas Sertifikat (CA) baru untuk terhubung ke instans DB RDS menggunakan Lapisan Soket Aman atau Keamanan Lapisan Pengangkutan (SSL/TLS). Setelah itu, Anda dapat menemukan informasi tentang pembaruan aplikasi untuk menggunakan sertifikat baru.
Topik ini dapat membantu Anda menentukan apakah ada aplikasi klien yang digunakan SSL/TLS untuk terhubung ke instans DB Anda. Jika demikian, Anda dapat memeriksa lebih lanjut apakah aplikasi tersebut memerlukan verifikasi sertifikat untuk terhubung.
catatan
Beberapa aplikasi dikonfigurasi untuk terhubung ke instans DB MySQL hanya jika aplikasi tersebut berhasil memverifikasi sertifikat pada server. Untuk aplikasi tersebut, Anda harus memperbarui penyimpanan kepercayaan aplikasi klien untuk menyertakan sertifikat CA baru.
Anda dapat menentukan mode SSL berikut: disabled, preferred, dan required. Saat Anda menggunakan mode SSL preferred dan sertifikat CA tidak ada atau tidak diperbarui, koneksi kembali tidak menggunakan SSL dan terhubung tanpa enkripsi.
Sebaiknya hindari mode preferred. Dalam mode preferred, jika koneksi menghadapi sertifikat yang tidak valid, koneksi berhenti menggunakan enkripsi dan melanjutkan tanpa enkripsi.
Setelah Anda memperbarui sertifikat CA di penyimpanan kepercayaan aplikasi klien, Anda dapat merotasi sertifikat di instans DB Anda. Sebaiknya Anda menguji prosedur ini di lingkungan pengembangan dan pementasan sebelum menerapkannya di lingkungan produksi Anda.
Untuk informasi selengkapnya tentang rotasi sertifikat, lihat Memutar sertifikat Anda SSL/TLS. Untuk informasi selengkapnya tentang mengunduh sertifikat, lihat . Untuk informasi tentang penggunaan SSL/TLS dengan instance MySQL DB, lihat. Dukungan SSL/TLS untuk instans MySQL DB di Amazon RDS
Topik
Menentukan apakah ada aplikasi yang terhubung ke instans DB MySQL menggunakan SSL
Jika Anda menggunakan Amazon RDS for MySQL versi 5.7, 8.0, atau 8.4 dan Skema Kinerja diaktifkan, jalankan kueri berikut untuk memeriksa apakah koneksi menggunakan SSL/TLS. Untuk informasi tentang cara mengaktifkan Skema Performa, lihat Performance Schema quick start
mysql> SELECT id, user, host, connection_type FROM performance_schema.threads pst INNER JOIN information_schema.processlist isp ON pst.processlist_id = isp.id;
Dalam output contoh ini, Anda dapat melihat sesi Anda sendiri (admin) dan aplikasi yang masuk sebagai webapp1 menggunakan SSL.
+----+-----------------+------------------+-----------------+ | id | user | host | connection_type | +----+-----------------+------------------+-----------------+ | 8 | admin | 10.0.4.249:42590 | SSL/TLS | | 4 | event_scheduler | localhost | NULL | | 10 | webapp1 | 159.28.1.1:42189 | SSL/TLS | +----+-----------------+------------------+-----------------+ 3 rows in set (0.00 sec)
Menentukan apakah klien memerlukan verifikasi sertifikat untuk terhubung
Anda dapat memeriksa apakah klien JDBC dan klien MySQL memerlukan verifikasi sertifikat untuk terhubung.
JDBC
Contoh berikut dengan Connector/J MySQL 8.0 menunjukkan salah satu cara untuk memeriksa properti koneksi JDBC aplikasi untuk menentukan apakah koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi koneksi JDBC untuk MySQL, lihat Configuration properties
Saat menggunakan Connector/J MySQL 8.0, koneksi SSL memerlukan verifikasi terhadap sertifikat server DB jika properti koneksi Anda sslMode telah disetel VERIFY_CA ke VERIFY_IDENTITY atau, seperti pada contoh berikut.
Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
catatan
Jika Anda menggunakan MySQL Java Connector v5.1.38 atau yang lebih baru, atau MySQL Java Connector v8.0.9 atau yang lebih baru untuk terhubung ke database Anda, bahkan jika Anda belum secara eksplisit mengkonfigurasi aplikasi Anda untuk SSL/TLS digunakan saat menghubungkan ke database Anda, driver klien ini default untuk menggunakan, mereka melakukan verifikasi sertifikat sebagian dan gagal terhubung jika sertifikat server database kedaluwarsaSSL/TLS. In addition, when using SSL/TLS.
MySQL
Contoh Klien MySQL berikut menunjukkan dua cara untuk memeriksa koneksi MySQL skrip untuk menentukan apakah koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi koneksi dengan Klien MySQL, lihat Client-side configuration for encrypted connections
Saat menggunakan MySQL Client versi 5.7 dan yang lebih tinggi, koneksi SSL memerlukan verifikasi terhadap sertifikat CA server jika untuk opsi yang Anda VERIFY_CA tentukan VERIFY_IDENTITY atau, seperti --ssl-mode pada contoh berikut.
mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem--ssl-mode=VERIFY_CA
Memperbarui penyimpanan kepercayaan aplikasi Anda
Untuk informasi tentang cara memperbarui penyimpanan kepercayaan untuk aplikasi MySQL, lihat Installing SSL certificates
Untuk informasi tentang cara mengunduh sertifikat root, lihat .
Untuk contoh skrip yang mengimpor sertifikat, lihat Contoh skrip untuk mengimpor sertifikat ke trust store Anda.
catatan
Saat memperbarui penyimpanan kepercayaan, Anda dapat mempertahankan sertifikat lama selain menambahkan sertifikat baru.
Jika Anda menggunakan driver JDBC mysql dalam aplikasi, atur properti berikut dalam aplikasi.
System.setProperty("javax.net.ssl.trustStore",certs); System.setProperty("javax.net.ssl.trustStorePassword", "password");
Saat Anda memulai aplikasi, atur properti berikut.
java -Djavax.net.ssl.trustStore=/path_to_trust_store/MyTruststore.jks-Djavax.net.ssl.trustStorePassword=my_trust_store_passwordcom.companyName.MyApplication
catatan
Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.
Contoh kode Java untuk membangun koneksi SSL
Contoh kode berikut menunjukkan cara menyiapkan koneksi SSL yang memvalidasi sertifikat server menggunakan JDBC.
public class MySQLSSLTest { private static final String DB_USER = "username"; private static final String DB_PASSWORD = "password"; // This trust store has only the prod root ca. private static final String TRUST_STORE_FILE_PATH = "file-path-to-trust-store"; private static final String TRUST_STORE_PASS = "trust-store-password"; public static void test(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore", TRUST_STORE_FILE_PATH); System.setProperty("javax.net.ssl.trustStorePassword", TRUST_STORE_PASS); Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = null; Statement stmt = null; ResultSet rs = null; try { connection = DriverManager.getConnection("jdbc:mysql://mydatabase.123456789012.us-east-1.rds.amazonaws.com:3306",properties); stmt = connection.createStatement(); rs=stmt.executeQuery("SELECT 1 from dual"); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return; } }
penting
Setelah Anda menentukan bahwa koneksi database Anda menggunakan SSL/TLS dan telah memperbarui toko kepercayaan aplikasi Anda, Anda dapat memperbarui database Anda untuk menggunakan sertifikat rds-ca-rsa 2048-g1. Untuk mengetahui petunjuknya, lihat langkah 3 dalam Memperbarui sertifikat CA Anda dengan memodifikasi instans atau cluster DB Anda.
Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.