Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Lapisan Soket Aman Oracle
Untuk mengaktifkan SSL enkripsi RDS untuk instance Oracle DB, tambahkan opsi Oracle ke grup SSL opsi yang terkait dengan instans DB. Amazon RDS menggunakan port kedua, seperti yang dipersyaratkan oleh Oracle, untuk SSL koneksi. Pendekatan ini memungkinkan teks yang jelas dan komunikasi SSL -terenkripsi terjadi pada saat yang sama antara instans DB dan *Plus. SQL Misalnya, Anda dapat menggunakan port dengan komunikasi teks yang jelas untuk berkomunikasi dengan sumber daya lain di dalam VPC sementara menggunakan port dengan komunikasi SSL -terenkripsi untuk berkomunikasi dengan sumber daya di luar. VPC
catatan
Anda dapat menggunakan salah satu SSL atau Native Network Encryption (NNE) yang sama RDS untuk instance Oracle DB, tetapi tidak keduanya. Jika Anda menggunakan SSL enkripsi, pastikan untuk mematikan enkripsi koneksi lainnya. Untuk informasi selengkapnya, lihat Enkripsi jaringan asli Oracle.
SSL/TLSdan tidak lagi NNE menjadi bagian dari Oracle Advanced Security. RDSUntuk Oracle, Anda dapat menggunakan SSL enkripsi dengan semua edisi berlisensi dari versi database berikut:
-
Oracle Database 21c (21.0.0)
-
Oracle Database 19c (19.0.0)
TLSversi untuk opsi Oracle SSL
Amazon RDS untuk Oracle mendukung Transport Layer Security (TLS) versi 1.0 dan 1.2. Saat Anda menambahkan SSL opsi Oracle baru, atur SQLNET.SSL_VERSION
secara eksplisit ke nilai yang valid. Nilai-nilai berikut diizinkan untuk pengaturan opsi ini:
-
"1.0"
— Klien dapat terhubung ke instans DB menggunakan TLS versi 1.0 saja. Untuk SSL opsi Oracle yang ada,SQLNET.SSL_VERSION
diatur ke"1.0"
secara otomatis. Anda dapat mengubah pengaturan bila diperlukan. -
"1.2"
— Klien dapat terhubung ke instans DB hanya menggunakan TLS 1.2. -
"1.2 or 1.0"
— Klien dapat terhubung ke instans DB menggunakan TLS 1.2 atau 1.0.
Cipher suite untuk opsi Oracle SSL
Amazon RDS untuk Oracle mendukung beberapa SSL cipher suite. Secara default, SSL opsi Oracle dikonfigurasi untuk menggunakan SSL_RSA_WITH_AES_256_CBC_SHA
cipher suite. Untuk menentukan cipher suite yang berbeda untuk digunakan melalui SSL koneksi, gunakan pengaturan SQLNET.CIPHER_SUITE
opsi.
Anda dapat menentukan beberapa nilai untukSQLNET.CIPHER_SUITE
. Teknik ini berguna jika Anda memiliki link database antara instans DB Anda dan memutuskan untuk memperbarui cipher suite Anda.
Tabel berikut merangkum SSL dukungan RDS untuk Oracle di semua edisi Oracle Database 19c dan 21c.
Suite Cipher (. SQLNET CIPHER_SUITE) | TLSdukungan versi (SQLNET. SSL_VERSION) | FIPSdukungan | RAMPPatuh Fed |
---|---|---|---|
SSL_ _ RSA WITH _ AES _256_ CBC _ SHA (default) | 1.0 dan 1.2 | Ya | Tidak |
SSL_ _ RSA WITH _ AES CBC _256_ _ SHA256 | 1.2 | Ya | Tidak |
SSL_ _ RSA WITH _ AES GCM _256_ _ SHA384 | 1.2 | Ya | Tidak |
TLS_ _ ECDHE _ RSA WITH _ AES GCM _256_ _ SHA384 | 1.2 | Ya | Ya |
TLS_ _ ECDHE _ RSA WITH _ AES GCM _128_ _ SHA256 | 1.2 | Ya | Ya |
TLS_ _ ECDHE _ RSA WITH _ AES CBC _256_ _ SHA384 | 1.2 | Ya | Ya |
TLS_ _ ECDHE _ RSA WITH _ AES CBC _128_ _ SHA256 | 1.2 | Ya | Ya |
TLS_ _ ECDHE _ RSA WITH _ AES CBC _256_ _ SHA | 1.2 | Ya | Ya |
TLS_ _ ECDHE _ RSA WITH _ AES CBC _128_ _ SHA | 1.2 | Ya | Ya |
FIPSdukungan
RDSuntuk Oracle memungkinkan Anda untuk menggunakan standar Federal Information Processing Standard (FIPS) untuk 140-2. FIPS140-2 adalah standar pemerintah Amerika Serikat yang mendefinisikan persyaratan keamanan modul kriptografi. Anda mengaktifkan FIPS standar dengan mengatur FIPS.SSLFIPS_140
TRUE
untuk SSL opsi Oracle. Ketika FIPS 140-2 dikonfigurasi untukSSL, pustaka kriptografi mengenkripsi data antara klien dan instance untuk Oracle DB. RDS
Klien harus menggunakan cipher suite yang -compliant. FIPS Saat membuat koneksi, klien dan RDS untuk instans Oracle DB menegosiasikan cipher suite mana yang akan digunakan saat mengirimkan pesan bolak-balik. Tabel di Cipher suite untuk opsi Oracle SSL menunjukkan suite SSL cipher FIPS -compliant untuk setiap versi. TLS Untuk informasi selengkapnya, lihat pengaturan database Oracle FIPS 140-2
Menambahkan SSL opsi
Untuk menggunakannyaSSL, instans DB RDS untuk Oracle Anda harus dikaitkan dengan grup opsi yang menyertakan SSL
opsi.
Untuk menambahkan SSL opsi ke grup opsi
-
Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi
SSL
.Untuk informasi tentang pembuatan grup opsi, lihat Membuat grup opsi.
-
Tambahkan opsi
SSL
ke grup opsi.Jika Anda ingin menggunakan hanya FIPS -verified cipher suite untuk SSL koneksi, atur opsi ke.
FIPS.SSLFIPS_140
TRUE
Untuk informasi tentang FIPS standar, lihatFIPSdukungan.Untuk informasi tentang menambahkan opsi ke grup opsi, lihat Menambahkan opsi ke grup opsi.
-
Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.
Untuk informasi tentang cara membuat instans DB, lihat Membuat instans DB Amazon RDS.
Untuk informasi tentang cara memodifikasi instans DB, lihat Memodifikasi instans DB Amazon RDS.
Untuk menambahkan SSL opsi ke grup opsi
-
Buat grup opsi baru atau identifikasi grup opsi yang ada yang dapat ditambahi opsi
SSL
.Untuk informasi tentang pembuatan grup opsi, lihat Membuat grup opsi.
-
Tambahkan opsi
SSL
ke grup opsi.Tentukan pengaturan opsi berikut:
-
Port
— Nomor SSL port -
VpcSecurityGroupMemberships
— Grup VPC keamanan yang opsinya diaktifkan -
SQLNET.SSL_VERSION
— TLS Versi yang dapat digunakan klien untuk terhubung ke instans DB
Misalnya, AWS CLI perintah berikut menambahkan
SSL
opsi ke grup opsi bernamaora-option-group
.contoh
Untuk Linux, macOS, atau Unix:
aws rds add-option-to-option-group --option-group-name ora-option-group \ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
Untuk Windows:
aws rds add-option-to-option-group --option-group-name ora-option-group ^ --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
-
-
Buat instans Oracle DB baru RDS dan kaitkan grup opsi dengannya, atau modifikasi instance RDS untuk Oracle DB untuk mengaitkan grup opsi dengannya.
Untuk informasi tentang cara membuat instans DB, lihat Membuat instans DB Amazon RDS.
Untuk informasi tentang cara memodifikasi instans DB, lihat Memodifikasi instans DB Amazon RDS.
Mengkonfigurasi SQL *Plus untuk digunakan SSL dengan instance RDS for Oracle DB
Sebelum Anda dapat terhubung ke instans RDS untuk Oracle DB yang menggunakan SSL opsi Oracle, Anda harus SQL mengkonfigurasi*Plus sebelum menghubungkan.
catatan
Untuk mengizinkan akses ke instans DB dari klien yang sesuai, pastikan bahwa grup keamanan Anda dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Mengontrol akses dengan grup keamanan. Juga, instruksi ini untuk SQL *Plus dan klien lain yang langsung menggunakan rumah Oracle. Untuk JDBC koneksi, lihatMenyiapkan SSL koneksi melalui JDBC.
Untuk SQL mengkonfigurasi*Plus untuk digunakan SSL untuk terhubung ke instans RDS for Oracle DB
-
Menetapkan variabel lingkungan
ORACLE_HOME
ke lokasi direktori Oracle home Anda.Path ke direktori Oracle home Anda bergantung pada instalasi Anda. Contoh berikut menetapkan variabel lingkungan
ORACLE_HOME
.prompt>export ORACLE_HOME=/home/user/app/user/product/19.0.0/dbhome_1
Untuk informasi tentang pengaturan variabel lingkungan Oracle, lihat SQL*Plus variabel lingkungan
dalam dokumentasi Oracle, dan lihat juga panduan instalasi Oracle untuk sistem operasi Anda. -
Menambahkan
$ORACLE_HOME/lib
ke variabel lingkunganLD_LIBRARY_PATH
.Berikut ini adalah contoh yang menetapkan LD_ LIBRARY _ variabel PATH lingkungan.
prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
-
Buat direktori untuk dompet Oracle di
$ORACLE_HOME/ssl_wallet
.Berikut ini adalah contoh yang membuat direktori dompet Oracle.
prompt>mkdir $ORACLE_HOME/ssl_wallet
-
Unduh file certificate bundle .pem yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl_wallet. Untuk informasi, lihat .
-
Di direktori
$ORACLE_HOME/network/admin
, ubah atau buat filetnsnames.ora
dan sertakan entri berikut.net_service_name
= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS) (HOST =endpoint
) (PORT =ssl_port_number
) ) ) (CONNECT_DATA = (SID =database_name
) ) (SECURITY = (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint
") ) ) -
Di direktori yang sama, ubah atau buat file sqlnet.ora dan sertakan parameter berikut.
catatan
Untuk berkomunikasi dengan entitas melalui koneksi TLS aman, Oracle memerlukan dompet dengan sertifikat yang diperlukan untuk otentikasi. Anda dapat menggunakan ORAPKI utilitas Oracle untuk membuat dan memelihara dompet Oracle, seperti yang ditunjukkan pada langkah 7. Untuk informasi selengkapnya, lihat Menyiapkan dompet Oracle menggunakan ORAPKI
dokumentasi Oracle. WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet))) SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION = 1.0 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_SERVER_DN_MATCH = ON
catatan
Anda dapat menetapkan
SSL_VERSION
ke nilai yang lebih tinggi jika instans DB Anda mendukungnya. -
Jalankan perintah berikut untuk membuat dompet Oracle.
prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
-
Ekstrak setiap sertifikat dalam file paket .pem ke dalam file .pem terpisah menggunakan utilitas OS.
-
Tambahkan setiap sertifikat ke dompet Anda menggunakan perintah
orapki
terpisah, mengganti
dengan nama file absolut dari file .pem.certificate-pem-file
prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert
certificate-pem-file
-auto_login_onlyUntuk informasi selengkapnya, lihat Memutar sertifikat SSL TLS /Anda.
Menghubungkan ke instans RDS untuk Oracle DB menggunakan SSL
Setelah Anda mengonfigurasikan SQL *Plus untuk digunakan SSL seperti yang dijelaskan sebelumnya, Anda dapat terhubung ke instans RDS for Oracle DB dengan opsi. SSL Jika perlu, Anda dapat terlebih dahulu mengekspor nilai TNS_ADMIN
yang mengacu ke direktori yang berisi file tnsnames.ora dan sqlnet.ora. Melakukannya memastikan bahwa SQL *Plus dapat menemukan file-file ini secara konsisten. Contoh berikut mengekspor nilai TNS_ADMIN
.
export TNS_ADMIN = ${ORACLE_HOME}/network/admin
Hubungkan ke instans DB. Misalnya, Anda dapat terhubung menggunakan SQL *Plus dan <net_service_name>
dalam file tnsnames.ora.
sqlplus
mydbuser
@net_service_name
Anda juga dapat terhubung ke instans DB menggunakan SQL *Plus tanpa menggunakan file tnsnames.ora dengan menggunakan perintah berikut.
sqlplus '
mydbuser
@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST =endpoint
) (PORT =ssl_port_number
))(CONNECT_DATA = (SID =database_name
)))'
Anda juga dapat terhubung ke instans RDS for Oracle DB tanpa menggunakanSSL. Misalnya, perintah berikut terhubung ke instans DB melalui port teks yang jelas tanpa SSL enkripsi.
sqlplus '
mydbuser
@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =endpoint
) (PORT =port_number
))(CONNECT_DATA = (SID =database_name
)))'
Jika Anda ingin menutup akses port Transmission Control Protocol (TCP), buat grup keamanan tanpa alamat IP yang masuk dan tambahkan ke instance. Penambahan ini menutup koneksi melalui TCP port, sementara masih memungkinkan koneksi melalui SSL port yang ditentukan dari alamat IP dalam rentang yang diizinkan oleh grup keamanan SSL opsi.
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
keytool -genkey -alias
client
-validity365
-keyalgRSA
-keystoreclientkeystore
Ambil langkah-langkah berikut untuk mempercayai sertifikat Amazon RDS root CA.
Untuk mempercayai sertifikat CA RDS root Amazon
-
Unduh file .pem paket sertifikat yang berfungsi untuk semua Wilayah AWS dan letakkan file di direktori ssl_wallet.
-
Ekstrak setiap sertifikat dalam file.pem ke dalam file terpisah menggunakan utilitas OS.
-
Ubah setiap sertifikat ke format.der menggunakan
openssl
perintah terpisah, ganticertificate-pem-file
dengan nama file sertifikat.pem (tanpa ekstensi.pem).openssl x509 -outform der -in
certificate-pem-file
.pem -outcertificate-pem-file
.der -
Impor setiap sertifikat ke keystore menggunakan perintah berikut.
keytool -import -alias rds-root -keystore
clientkeystore.jks
-filecertificate-pem-file
.derUntuk informasi selengkapnya, lihat Memutar sertifikat SSL TLS /Anda.
-
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.
Menegakkan kecocokan DN dengan koneksi SSL
Anda dapat menggunakan parameter Oracle SSL_SERVER_DN_MATCH
untuk menerapkan bahwa nama yang dibedakan (DN) untuk server basis data cocok dengan nama layanannya. Jika Anda menerapkan verifikasi kecocokan, SSL pastikan sertifikat tersebut berasal dari server. Jika Anda tidak menerapkan verifikasi kecocokan, SSL lakukan pemeriksaan tetapi mengizinkan koneksi, terlepas dari apakah ada kecocokan. Jika Anda tidak menerapkan kecocokan, Anda mengizinkan server untuk berpotensi memalsukan identitasnya.
Untuk menerapkan pencocokan DN, tambahkan properti kecocokan DN dan gunakan string koneksi yang ditentukan di bawah ini.
Tambahkan properti ke koneksi klien untuk menerapkan pencocokan DN.
properties.put("oracle.net.ssl_server_dn_match", "TRUE");
Gunakan string koneksi berikut untuk menerapkan pencocokan DN saat menggunakan. SSL
final String connectionString = String.format( "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))" + "(CONNECT_DATA=(SID=%s))" + "(SECURITY = (SSL_SERVER_CERT_DN = \"C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=%s\")))", DB_SERVER_NAME, SSL_PORT, DB_SID, DB_SERVER_NAME);
Memecahkan masalah koneksi SSL
Anda mungkin mengueri basis data Anda dan menerima kesalahan ORA-28860
.
ORA-28860: Fatal SSL error 28860. 00000 - "Fatal SSL error" *Cause: An error occurred during the SSL connection to the peer. It is likely that this side sent data which the peer rejected. *Action: Enable tracing to determine the exact cause of this error.
Kesalahan ini terjadi ketika klien mencoba untuk terhubung menggunakan versi TLS yang server tidak mendukung. Untuk menghindari kesalahan ini, edit sqlnet.ora dan atur SSL_VERSION
ke versi yang benar. TLS Untuk informasi selengkapnya, lihat Oracle Support Document 2748438.1