Memberlakukan Versi Minimum dari TLS 1.2 - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memberlakukan Versi Minimum dari TLS 1.2

Untuk menambahkan peningkatan keamanan saat berkomunikasi denganAWS layanan, Anda harus mengkonfigurasi AndaAWS ParallelCluster untuk menggunakan TLS 1.2 atau yang lebih baru. Saat Anda menggunakanAWS ParallelCluster, Python digunakan untuk mengatur versi TLS.

Untuk memastikan tidakAWS ParallelCluster menggunakan versi TLS lebih awal dari TLS 1.2, Anda mungkin perlu mengkompilasi ulang OpenSSL untuk menegakkan minimum ini dan kemudian mengkompilasi ulang Python untuk menggunakan OpenSSL yang baru dibangun.

Tentukan Protokol yang Didukung Saat Ini

Pertama, buat sertifikat yang ditandatangani sendiri untuk digunakan untuk server pengujian dan SDK Python menggunakan OpenSSL.

$ openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

Kemudian putar server uji menggunakan OpenSSL.

$ openssl s_server -key key.pem -cert cert.pem -www

Di jendela terminal baru, buat lingkungan virtual dan instal Python SDK.

$ python3 -m venv test-env source test-env/bin/activate pip install botocore

Buat skrip Python baru bernamacheck.py yang menggunakan pustaka HTTP yang mendasari SDK.

$ import urllib3 URL = 'https://localhost:4433/' http = urllib3.PoolManager( ca_certs='cert.pem', cert_reqs='CERT_REQUIRED', ) r = http.request('GET', URL) print(r.data.decode('utf-8'))

Jalankan skrip baru Anda.

$ python check.py

Ini menampilkan detail tentang koneksi yang dibuat. Cari “Protocol:" di output. Jika output adalah “TLSv1.2" atau yang lebih baru, SDK default ke TLS v1.2 atau yang lebih baru. Jika versi sebelumnya, Anda perlu mengkompilasi ulang OpenSSL dan mengkompilasi ulang Python.

Namun, meskipun instalasi Python Anda secara default ke TLS v1.2 atau yang lebih baru, Python masih memungkinkan untuk menegosiasikan ulang ke versi yang lebih awal dari TLS v1.2 jika server tidak mendukung TLS v1.2 atau yang lebih baru. Untuk memeriksa bahwa Python tidak secara otomatis menegosiasikan ulang ke versi sebelumnya, restart server pengujian dengan yang berikut ini.

$ openssl s_server -key key.pem -cert cert.pem -no_tls1_3 -no_tls1_2 -www

Jika Anda menggunakan versi sebelumnya dari OpenSSL, Anda mungkin tidak memiliki-no_tls_3 bendera yang tersedia. Jika ini masalahnya, hapus flag karena versi OpenSSL yang Anda gunakan tidak mendukung TLS v1.3. Kemudian jalankan kembali skrip Python.

$ python check.py

Jika instalasi Python Anda dengan benar tidak menegosiasikan ulang untuk versi yang lebih awal dari TLS 1.2, Anda akan menerima kesalahan SSL.

$ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='localhost', port=4433): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: UNSUPPORTED_PROTOCOL] unsupported protocol (_ssl.c:1108)')))

Jika Anda dapat membuat koneksi, Anda perlu mengkompilasi ulang OpenSSL dan Python untuk menonaktifkan negosiasi protokol lebih awal dari TLS v1.2.

Kompilasi OpenSSL dan Python

Untuk memastikan bahwaAWS ParallelCluster tidak bernegosiasi untuk apa pun lebih awal dari TLS 1.2, Anda perlu mengkompilasi ulang OpenSSL dan Python. Untuk melakukan ini, salin konten berikut untuk membuat skrip dan menjalankannya.

#!/usr/bin/env bash set -e OPENSSL_VERSION="1.1.1d" OPENSSL_PREFIX="/opt/openssl-with-min-tls1_2" PYTHON_VERSION="3.8.1" PYTHON_PREFIX="/opt/python-with-min-tls1_2" curl -O "https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz" tar -xzf "openssl-$OPENSSL_VERSION.tar.gz" cd openssl-$OPENSSL_VERSION ./config --prefix=$OPENSSL_PREFIX no-ssl3 no-tls1 no-tls1_1 no-shared make > /dev/null sudo make install_sw > /dev/null cd /tmp curl -O "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tgz" tar -xzf "Python-$PYTHON_VERSION.tgz" cd Python-$PYTHON_VERSION ./configure --prefix=$PYTHON_PREFIX --with-openssl=$OPENSSL_PREFIX --disable-shared > /dev/null make > /dev/null sudo make install > /dev/null

Ini mengkompilasi versi Python yang memiliki OpenSSL yang terhubung secara statis yang tidak secara otomatis menegosiasikan apa pun lebih awal dari TLS 1.2. Ini juga menginstal OpenSSL di/opt/openssl-with-min-tls1_2 direktori dan menginstal Python di/opt/python-with-min-tls1_2 direktori. Setelah Anda menjalankan skrip ini, konfirmasikan penginstalan versi baru Python.

$ /opt/python-with-min-tls1_2/bin/python3 --version

Ini harus mencetak berikut ini.

Python 3.8.1

Untuk mengonfirmasi versi baru Python ini tidak menegosiasikan versi lebih awal dari TLS 1.2, jalankan kembali langkah-langkah dariTentukan Protokol yang Didukung Saat Ini menggunakan versi Python yang baru diinstal (yaitu,/opt/python-with-min-tls1_2/bin/python3).