Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan TLS di SDK untuk Java
Menggunakan AWS SDK untuk Java kemampuan TLS dari platform Java yang mendasarinya. Dalam topik ini, kami menunjukkan contoh menggunakan implementasi OpenJDK yang digunakan oleh Amazon Corretto 17.
Untuk bekerja dengan Layanan AWS, JDK yang mendasarinya harus mendukung versi minimum TLS 1.2, tetapi TLS 1.3 disarankan.
TLS 1.3 adalah prasyarat untuk mengaktifkan kriptografi pasca-kuantum, yang mungkin memerlukan tindakan atau konfigurasi tambahan. Untuk mempelajari lebih lanjut, lihat Mengaktifkan T https://docs.aws.amazon.com/sdkref/latest/guide/pqtls-details.html LS pasca-kuantum hibrida.
Pengguna harus berkonsultasi dengan dokumentasi platform Java yang mereka gunakan dengan SDK untuk mengetahui versi TLS mana yang diaktifkan secara default serta cara mengaktifkan dan menonaktifkan versi TLS tertentu.
Cara memeriksa informasi versi TLS
Menggunakan OpenJDK, kode berikut menunjukkan penggunaan SSLContext
System.out.println(Arrays.toString(SSLContext.getDefault().getSupportedSSLParameters().getProtocols()));
Misalnya, Amazon Corretto 17 (OpenJDK) menghasilkan output berikut.
[TLSv1.3, TLSv1.2, TLSv1.1, TLSv1, SSLv3, SSLv2Hello]
Untuk melihat jabat tangan SSL beraksi dan versi TLS apa yang digunakan, Anda dapat menggunakan properti sistem javax.net.debug.
Misalnya, jalankan aplikasi Java yang menggunakan TLS.
java app.jar -Djavax.net.debug=ssl:handshake
Aplikasi mencatat jabat tangan SSL mirip dengan yang berikut ini.
... javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.221 EST|ClientHello.java:641|Produced ClientHello handshake message ( "ClientHello": { "client version" : "TLSv1.2", ... javax.net.ssl|DEBUG|10|main|2022-12-23 13:53:12.295 EST|ServerHello.java:888|Consuming ServerHello handshake message ( "ServerHello": { "server version" : "TLSv1.2", ...
AWS Debugging TLS klien CRT HTTP
Jika Anda menggunakan klien HTTP AWS CRT, properti debug Java TLS yang ditunjukkan dalam contoh sebelumnya tidak berpengaruh karena CRT menggunakan tumpukan TLS-nya sendiri. Untuk memeriksa detail permintaan tingkat jaringan dengan klien HTTP CRT, aktifkan pencatatan kabel. Untuk informasi selengkapnya, lihat Aktifkan pencatatan kawat.
Menerapkan versi TLS minimum
SDK untuk Java selalu lebih memilih versi TLS terbaru yang didukung oleh platform dan layanan. Pendekatan untuk menerapkan versi TLS minimum tertentu berbeda tergantung pada klien HTTP yang Anda gunakan.
Untuk klien HTTP Apache, Netty, dan URL Connection, yang menggunakan tumpukan Java TLS, gunakan properti sistem. jdk.tls.client.protocols Misalnya, untuk menerapkan TLS 1.3 untuk klien layanan SDK, berikan properti sistem berikut.
java -Djdk.tls.client.protocols=TLSv1.3 -jar app.jar
Untuk informasi selengkapnya tentang mengkonfigurasi versi TLS, lihat dokumentasi untuk platform Java Anda.
Untuk klien HTTP AWS CRT, yang menggunakan tumpukan TLS-nya sendiri, properti jdk.tls.client.protocols sistem tidak berpengaruh. Sebagai gantinya, gunakan opsi minTlsVersion pembangun untuk menerapkan versi TLS minimum.
TlsVersionsoftware.amazon.awssdk.http.crt.TlsVersion) memberikan nilai-nilai berikut:
TLS_1_3-
Menegakkan TLS 1.3 sebagai versi minimum.
SYSTEM_DEFAULT-
Menggunakan perilaku negosiasi versi TLS default platform.
Contoh berikut membuat klien HTTP AWS CRT sinkron yang memberlakukan TLS 1.3 sebagai versi minimum.
import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.http.crt.TlsVersion; AwsCrtHttpClient httpClient = AwsCrtHttpClient.builder() .minTlsVersion(TlsVersion.TLS_1_3) .build();
Contoh berikut membuat klien HTTP AWS CRT asinkron yang memberlakukan TLS 1.3 sebagai versi minimum.
import software.amazon.awssdk.http.crt.AwsCrtAsyncHttpClient; import software.amazon.awssdk.http.crt.TlsVersion; AwsCrtAsyncHttpClient asyncHttpClient = AwsCrtAsyncHttpClient.builder() .minTlsVersion(TlsVersion.TLS_1_3) .build();
Anda kemudian dapat meneruskan klien HTTP yang dikonfigurasi ke klien AWS layanan.
import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.http.crt.AwsCrtHttpClient; import software.amazon.awssdk.http.crt.TlsVersion; S3Client s3Client = S3Client.builder() .httpClientBuilder(AwsCrtHttpClient.builder() .minTlsVersion(TlsVersion.TLS_1_3)) .build();
Persyaratan macOS untuk TLS 1.3
Apple Secure Transport, backend TLS CRT default macOS, tidak mendukung TLS 1.3. Untuk digunakan TlsVersion.TLS_1_3 di macOS, Anda harus menyetel variabel lingkungan AWS_CRT_USE_NON_FIPS_TLS_13 ke nilai yang tidak kosong sebelum memulai aplikasi. Ini mengalihkan CRT ke backend s2n-tls-nya.
Perhatikan pertimbangan berikut saat Anda menggunakan variabel lingkungan ini:
-
Backend s2n-tls tidak. FIPS-validated
-
Backend s2n-tls tidak terintegrasi dengan MacOS Keychain.
Jika Anda tidak menyetel variabel lingkungan ini di macOS, permintaan pertama gagal dengan CRT-side kesalahan.
Pengecualian timbal balik dengan pengaturan TLS pasca-kuantum
Anda tidak dapat menggabungkan postQuantumTlsEnabled(false) denganminTlsVersion(TlsVersion.TLS_1_3). Opsi ini saling eksklusif dalam konteks CRT TLS. Jika Anda menentukan keduanya, pembangun melemparIllegalStateException.
AWS Upgrade titik akhir API ke TLS 1.2
Lihat posting blog ini