Memperbarui aplikasi untuk terhubung ke instans SQL DB Saya menggunakan sertifikatSSL/TLSbaru - Layanan Basis Data Relasional Amazon

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 instans SQL DB Saya menggunakan sertifikatSSL/TLSbaru

Mulai 13 Januari 2023, Amazon RDS telah menerbitkan sertifikat Certificate Authority (CA) baru untuk menghubungkan ke instans RDS DB Anda menggunakan Secure Socket Layer atau Transport Layer Security (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 SSL TLS menggunakan/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 My SQL DB hanya jika mereka berhasil memverifikasi sertifikat di server. Untuk aplikasi tersebut, Anda harus memperbarui penyimpanan kepercayaan aplikasi klien untuk menyertakan sertifikat CA baru.

Anda dapat menentukan SSL mode berikut:disabled,preferred, danrequired. Bila Anda menggunakan preferred SSL mode dan sertifikat CA tidak ada atau tidak up to date, koneksi kembali ke tidak menggunakan SSL dan terhubung tanpa enkripsi.

Karena versi yang lebih baru ini menggunakan SSL protokol Open, sertifikat server yang kedaluwarsa tidak mencegah koneksi berhasil kecuali required SSL mode ditentukan.

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 SSL TLS /Anda. Untuk informasi selengkapnya tentang mengunduh sertifikat, lihat . Untuk informasi tentang menggunakanSSL/TLSdengan instans SQL DB Saya, lihatSSL/TLSdukungan untuk instans SQL DB Saya di Amazon RDS.

Menentukan apakah ada aplikasi yang terhubung ke instans My SQL DB Anda menggunakan SSL

Jika Anda menggunakan Amazon RDS untuk SQL versi Saya 5.7 atau 8.0 dan Skema Kinerja diaktifkan, jalankan kueri berikut untuk memeriksa apakah koneksi menggunakan/. SSL TLS Untuk informasi tentang mengaktifkan Skema Kinerja, lihat mulai cepat Skema Kinerja di dokumentasi Saya. SQL

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 contoh keluaran ini, Anda dapat melihat sesi (admin) Anda sendiri dan aplikasi yang masuk seperti webapp1 yang digunakanSSL.

+----+-----------------+------------------+-----------------+ | 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 JDBC klien dan SQL klien Saya memerlukan verifikasi sertifikat untuk terhubung.

JDBC

Contoh berikut dengan My SQL Connector/J 8.0 menunjukkan salah satu cara untuk memeriksa properti koneksi aplikasi untuk menentukan apakah JDBC koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi JDBC koneksi untuk MySQL, lihat Properti konfigurasi dalam SQL dokumentasi Saya.

Saat menggunakan SQL Konektor Saya/J 8.0, SSL koneksi memerlukan verifikasi terhadap sertifikat server DB jika properti koneksi Anda telah sslMode disetel ke VERIFY_CA atauVERIFY_IDENTITY, 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 My SQL Java Connector v5.1.38 atau yang lebih baru, atau My SQL Java Connector v8.0.9 atau yang lebih baru untuk terhubung ke database Anda, bahkan jika Anda belum secara eksplisit mengkonfigurasi aplikasi Anda untuk menggunakanSSL/TLSsaat menghubungkan ke database Anda, driver klien ini default untuk menggunakan/. SSL TLS Selain itu, saat menggunakanSSL/TLS, mereka melakukan verifikasi sertifikat sebagian dan gagal terhubung jika sertifikat server database kedaluwarsa.

Saya SQL

Contoh berikut dengan SQL Klien Saya menunjukkan dua cara untuk memeriksa SQL koneksi Saya skrip untuk menentukan apakah koneksi yang berhasil memerlukan sertifikat yang valid. Untuk informasi selengkapnya tentang semua opsi koneksi dengan SQL Klien Saya, lihat Konfigurasi sisi klien untuk koneksi terenkripsi dalam dokumentasi Saya. SQL

Saat menggunakan My SQL 5.7 atau My SQL 8.0 Client, SSL koneksi memerlukan verifikasi terhadap sertifikat CA server jika untuk --ssl-mode opsi yang Anda tentukan VERIFY_CA atauVERIFY_IDENTITY, seperti pada contoh berikut.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-mode=VERIFY_CA

Saat menggunakan Klien SQL 5.6 Saya, SSL koneksi memerlukan verifikasi terhadap sertifikat CA server jika Anda menentukan --ssl-verify-server-cert opsi, seperti pada contoh berikut.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-verify-server-cert

Memperbarui penyimpanan kepercayaan aplikasi Anda

Untuk informasi tentang memperbarui toko kepercayaan untuk SQL aplikasi Saya, lihat Menginstal SSL sertifikat di SQL dokumentasi Saya.

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 JDBC driver 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_password com.companyName.MyApplication
catatan

Tetapkan kata sandi selain penggugah (prompt) yang ditampilkan di sini sebagai praktik terbaik keamanan.

Contoh kode Java untuk membangun SSL koneksi

Contoh kode berikut menunjukkan cara mengatur SSL koneksi yang memvalidasi sertifikat server menggunakanJDBC.

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 menggunakanSSL/TLSdan 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.

Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.