Menyiapkan SSL koneksi melalui JDBC - 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.

Menyiapkan SSL koneksi melalui JDBC

Untuk menggunakan SSL koneksi overJDBC, Anda harus membuat keystore, mempercayai sertifikat Amazon RDS root CA, dan menggunakan cuplikan kode yang ditentukan berikut ini.

Untuk membuat keystore dalam JKS format, Anda dapat menggunakan perintah berikut. Untuk informasi selengkapnya tentang cara membuat keystore, lihat Creating a keystore di dokumentasi Oracle. Untuk informasi referensi, lihat keytool di Platform Java, Referensi Alat Edisi Standar.

keytool -genkey -alias client -validity 365 -keyalg RSA -keystore clientkeystore

Ambil langkah-langkah berikut untuk mempercayai sertifikat Amazon RDS root CA.

Untuk mempercayai sertifikat CA RDS root Amazon
  1. Unduh file .pem paket sertifikat yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl_wallet.

    Untuk informasi tentang cara mengunduh sertifikat, lihat .

  2. Ekstrak setiap sertifikat dalam file.pem ke dalam file terpisah menggunakan utilitas OS.

  3. Ubah setiap sertifikat ke format.der menggunakan openssl perintah terpisah, ganti certificate-pem-file dengan nama file sertifikat.pem (tanpa ekstensi.pem).

    openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der
  4. Impor setiap sertifikat ke keystore menggunakan perintah berikut.

    keytool -import -alias rds-root -keystore clientkeystore.jks -file certificate-pem-file.der

    Untuk informasi selengkapnya, lihat Memutar sertifikat SSL TLS /Anda.

  5. Konfirmasi bahwa keystore berhasil dibuat.

    keytool -list -v -keystore clientkeystore.jks

    Masukkan kata sandi keystore saat diminta.

Contoh kode berikut menunjukkan cara mengatur SSL koneksi menggunakanJDBC.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class OracleSslConnectionTest { private static final String DB_SERVER_NAME = "dns-name-provided-by-amazon-rds"; private static final Integer SSL_PORT = "ssl-option-port-configured-in-option-group"; private static final String DB_SID = "oracle-sid"; private static final String DB_USER = "user-name"; private static final String DB_PASSWORD = "password"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore"; private static final String KEY_STORE_PASS = "keystore-password"; public static void main(String[] args) throws SQLException { final Properties properties = new Properties(); final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))", DB_SERVER_NAME, SSL_PORT, DB_SID); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); properties.put("oracle.jdbc.J2EE13Compliant", "true"); properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); properties.put("javax.net.ssl.trustStoreType", "JKS"); properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); final Connection connection = DriverManager.getConnection(connectionString, properties); // If no exception, that means handshake has passed, and an SSL connection can be opened } }
catatan

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