TLS의 최소 버전 적용 - AWS SDK for JavaScript

곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 링크된 공지 사항을 참조하세요.

TLS의 최소 버전 적용

중요

AWS SDK for JavaScript 버전 2는 지정된 AWS 서비스 엔드포인트에서 지원하는 최고 수준의 TLS 버전을 자동으로 협상합니다. 선택적으로 애플리케이션에 필요한 최소 TLS 버전(예: TLS 1.2 또는 1.3)을 적용할 수 있지만, 일부 AWS 서비스 엔드포인트는 TLS 1.3을 지원하지 않으므로 TLS 1.3을 적용하면 일부 호출이 실패할 수 있다는 점에 유의하세요.

AWS 서비스와 통신할 때 보안을 강화하려면 TLS 1.2 이상을 사용하도록 AWS SDK for JavaScript를 구성합니다.

전송 계층 보안(TLS)은 웹 브라우저 및 기타 애플리케이션에서 네트워크를 통해 교환되는 데이터의 프라이버시 및 무결성을 보장하기 위해 사용하는 프로토콜입니다.

Node.js에서 TLS 확인 및 적용

AWS SDK for JavaScript를 Node.js와 함께 사용하면 기본 Node.js 보안 계층을 사용하여 TLS 버전을 설정합니다.

Node.js 12.0.0 이상에서는 TLS 1.3을 지원하는 OpenSSL 1.1.1b의 최소 버전을 사용합니다. AWS SDK for JavaScript v3에서는 사용 가능한 경우 기본적으로 TLS 1.3을 사용하지만, 필요한 경우 기본적으로 더 낮은 버전을 사용합니다.

OpenSSL 및 TLS의 버전 확인

컴퓨터에 Node.js에서 사용하는 OpenSSL의 버전을 얻으려면 다음 명령을 실행합니다.

node -p process.versions

목록에 있는 OpenSSL 버전은 다음 예제와 같이 Node.js에서 사용하는 버전입니다.

openssl: '1.1.1b'

컴퓨터에서 Node.js에서 사용하는 TLS 버전을 얻으려면 노드 셸을 시작하고 순서대로 다음 명령을 실행합니다.

> var tls = require("tls"); > var tlsSocket = new tls.TLSSocket(); > tlsSocket.getProtocol();

마지막 명령은 다음 예제와 같이 TLS 버전을 출력합니다.

'TLSv1.3'

Node.js는 기본적으로 이 버전의 TLS를 사용하고 호출이 성공하지 못하면 다른 버전의 TLS를 협상하려고 시도합니다.

TLS의 최소 버전 적용

Node.js는 호출이 실패하면 TLS 버전을 협상합니다. 명령줄에서 스크립트를 실행할 때 또는 JavaScript 코드의 요청에 따라 이 협상 중에 허용 가능한 최소 TLS 버전을 적용할 수 있습니다.

명령줄에서 최소 TLS 버전을 지정하려면 Node.js 버전 11.0.0 이상을 사용해야 합니다. 특정 Node.js 버전을 설치하려면 먼저 노드 버전 관리자 설치 및 업데이트에 있는 단계를 사용하여 노드 버전 관리자(nvm)를 설치합니다. 그런 다음, 다음 명령을 실행하여 특정 버전의 Node.js를 설치하고 사용합니다.

nvm install 11 nvm use 11
Enforcing TLS 1.2

TLS 1.2가 허용 가능한 최소 버전인 경우 이를 적용하려면 다음 예제와 같이 스크립트를 실행할 때 --tls-min-v1.2 인수를 지정합니다.

node --tls-min-v1.2 yourScript.js

JavaScript 코드에서 특정 요청에 대해 허용 가능한 최소 TLS 버전을 지정하려면 다음 예제와 같이 httpOptions 파라미터를 사용하여 프로토콜을 지정합니다.

const https = require("https"); const {NodeHttpHandler} = require("@aws-sdk/node-http-handler"); const {DynamoDBClient} = require("@aws-sdk/client-dynamodb"); const client = new DynamoDBClient({ region: "us-west-2", requestHandler: new NodeHttpHandler({ httpsAgent: new https.Agent( { secureProtocol: 'TLSv1_2_method' } ) }) });
Enforcing TLS 1.3

TLS 1.3이 허용 가능한 최소 버전인 경우 이를 적용하려면 다음 예와 같이 스크립트를 실행할 때 --tls-min-v1.3 인수를 지정합니다.

node --tls-min-v1.3 yourScript.js

JavaScript 코드에서 특정 요청에 대해 허용 가능한 최소 TLS 버전을 지정하려면 다음 예제와 같이 httpOptions 파라미터를 사용하여 프로토콜을 지정합니다.

const https = require("https"); const {NodeHttpHandler} = require("@aws-sdk/node-http-handler"); const {DynamoDBClient} = require("@aws-sdk/client-dynamodb"); const client = new DynamoDBClient({ region: "us-west-2", requestHandler: new NodeHttpHandler({ httpsAgent: new https.Agent( { secureProtocol: 'TLSv1_3_method' } ) }) });

브라우저 스크립트에서 TLS 확인 및 적용

브라우저 스크립트에서 SDK for JavaScript를 사용하면 브라우저 설정이 사용되는 TLS 버전을 제어합니다. 브라우저에서 사용하는 TLS 버전은 스크립트로 검색하거나 설정할 수 없으며 사용자가 구성해야 합니다. 브라우저 스크립트에 사용된 TLS 버전을 확인하고 적용하려면 해당 브라우저의 지침을 참조하세요.

Microsoft Internet Explorer
  1. Internet Explorer를 엽니다.

  2. 메뉴 모음에서 도구인터넷 옵션고급 탭을 선택합니다.

  3. 보안 범주까지 아래로 스크롤하여 TLS 1.2 사용 옵션 상자를 수동으로 선택합니다.

  4. 확인을 클릭합니다.

  5. 브라우저를 닫고 Internet Explorer를 다시 시작합니다.

Microsoft Edge
  1. Windows 메뉴 검색 상자에 인터넷 옵션을 입력합니다.

  2. 가장 일치하는 항목에서 인터넷 옵션을 클릭합니다.

  3. 인터넷 속성 창의 고급 탭에서 보안 섹션까지 아래로 스크롤합니다.

  4. 사용자 TLS 1.2 확인란을 선택합니다.

  5. 확인을 클릭합니다.

Google Chrome
  1. Google Chrome을 엽니다.

  2. Alt F를 클릭하고 설정을 선택합니다.

  3. 아래로 스크롤하여 고급 설정 표시를 선택합니다.

  4. 시스템 섹션까지 아래로 스크롤하여 프록시 설정 열기를 클릭합니다.

  5. 고급 탭을 선택합니다.

  6. 보안 범주까지 아래로 스크롤하여 TLS 1.2 사용 옵션 상자를 수동으로 선택합니다.

  7. 확인을 클릭합니다.

  8. 브라우저를 닫고 Google Chrome을 다시 시작합니다.

Mozilla Firefox
  1. Firefox를 엽니다.

  2. 주소 표시줄에 about:config를 입력하고 Enter 키를 누릅니다.

  3. 검색 필드에 tls를 입력합니다. security.tls.version.min의 항목을 찾아 두 번 클릭합니다.

  4. 정수 값을 3으로 설정하여 TLS 1.2의 프로토콜을 기본값으로 강제 설정합니다.

  5. 확인을 클릭합니다.

  6. 브라우저를 닫고 Mozilla Firefox를 다시 시작합니다.

Apple Safari

SSL 프로토콜을 활성화할 수 있는 옵션은 없습니다. Safari 버전 7 이상을 사용하는 경우 TLS 1.2가 자동으로 활성화됩니다.