이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
최소 버전 적용 TLS
AWS Command Line Interface (AWS CLI) 를 사용할 때 전송 계층 보안 (TLS) 프로토콜은 AWS CLI 과 AWS 서비스() 간의 통신을 보호하는 데 중요한 역할을 합니다. AWS 서비스와 통신할 때 보안을 강화하려면 TLS 1.2 이상을 사용해야 합니다.
는 암호화, 인증 AWS CLI 및 데이터 무결성을 제공하는 TLS 프로토콜을 통해 데이터를 안전하게 AWS 서비스 교환할 수 있습니다. TLS프로토콜을 AWS CLI 활용하면 무단 액세스 및 데이터 침해로부터 상호 AWS 서비스 작용을 보호하고 생태계의 전반적인 보안을 강화할 수 AWS 있습니다.
AWS 공동 책임 모델
AWS CLI 버전 1에서 TLS 1.2 이전 TLS 버전을 사용하지 않도록 하려면 Open을 다시 컴파일하여 이 최소값을 적용한 다음 새로 빌드된 SSL Open을 사용하도록 Python을 다시 컴파일해야 할 수 있습니다. SSL
현재 지원되는 프로토콜 확인
먼저 Open을 사용하여 테스트 서버와 SDK Python에 사용할 자체 서명된 인증서를 만듭니다. SSL
$
openssl req -subj '/CN=localhost' -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365
그런 다음 SSL Open을 사용하여 테스트 서버를 가동합니다.
$
openssl s_server -key key.pem -cert cert.pem -www
새 터미널 창에서 가상 환경을 만들고 SDK for Python을 설치합니다.
$
python3 -m venv test-env source test-env/bin/activate pip install botocore
SDK의 기본 HTTP 라이브러리를 사용하는 이름을 check.py
가진 새 Python 스크립트를 작성하십시오.
$
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'))
새 스크립트를 실행합니다.
$
python check.py
그러면 연결에 대한 세부 정보가 표시됩니다. 출력에서 "프로토콜 : "을 검색합니다. 출력이 "TLSv1.2" 이상이면 SDK 기본값은 TLS v1.2 이상입니다. 이전 버전인 경우 Open을 다시 SSL 컴파일하고 Python을 다시 컴파일해야 합니다.
그러나 Python을 기본적으로 TLS v1.2 이상으로 설치하더라도 서버가 v1.2 이상을 지원하지 않으면 Python이 TLS v1.2 이전 버전으로 재협상할 수 있습니다. TLS Python이 이전 버전으로 자동으로 다시 협상하지 않는지 확인하려면 다음과 같이 테스트 서버를 다시 시작하세요.
$
openssl s_server -key key.pem -cert cert.pem -no_tls1_3 -no_tls1_2 -www
이전 버전의 Open을 사용하는 경우 플래그를 사용하지 못할 수 있습니다. SSL -no_tls_3
이 경우 사용 중인 Open SSL 버전이 TLS v1.3을 지원하지 않으므로 플래그를 제거하세요. 그런 다음 Python 스크립트를 다시 실행합니다.
$
python check.py
Python을 제대로 설치해도 TLS 1.2 이전 버전에 대한 재협상이 이루어지지 않으면 오류가 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)')))
연결이 가능하다면 Open과 SSL Python을 다시 컴파일하여 v1.2 이전의 TLS 프로토콜 협상을 비활성화해야 합니다.
SSL오픈과 파이썬 컴파일
TLS1.2 이전 버전에서 SDK OR이 AWS CLI 협상되지 않도록 하려면 Open과 SSL Python을 다시 컴파일해야 합니다. 이렇게 하려면 다음 내용을 복사하여 스크립트를 만들고 실행합니다.
#!/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
이것은 1.2 이전의 어떤 것도 자동으로 협상하지 않는 정적으로 연결된 Open이 SSL 있는 Python 버전을 컴파일합니다. TLS 이렇게 하면 디렉터리에 SSL Open이 설치되고 /opt/openssl-with-min-tls1_2
디렉터리에 Python이 /opt/python-with-min-tls1_2
설치됩니다. 이 스크립트를 실행한 후 새 버전의 Python 설치를 확인하세요.
$
/opt/python-with-min-tls1_2/bin/python3 --version
다음 사항이 인쇄되어야 합니다.
$
Python 3.8.1
이 새 버전의 Python이 TLS 1.2 이전 버전과 호환되지 않는지 확인하려면 새로 설치된 Python 버전 (즉,/opt/python-with-min-tls1_2/bin/python3
) 을 현재 지원되는 프로토콜 확인 사용하는 단계를 다시 실행하십시오.