SSL 사용 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SSL 사용

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

애플리케이션에 SSL을 사용하려면 먼저 인증 기관(CA)에서 디지털 서버 인증서를 가져와야 합니다. 간단히 하기 위해 이 안내서에서는 인증서를 생성한 다음 자체 서명합니다. 학습 및 테스트 용도에는 자체 서명된 인증서가 유용하지만 프로덕션 스택에는 항상 CA가 서명한 인증서를 사용해야 합니다.

이 안내서에서는 다음을 수행합니다.

  1. OpenSSL을 설치 및 구성합니다.

  2. 프라이빗 키를 만듭니다.

  3. 인증서 서명 요청을 생성합니다.

  4. 자체 서명된 인증서를 생성합니다.

  5. 인증서 정보를 사용하여 애플리케이션을 편집합니다.

중요

애플리케이션이 SSL을 사용하는 경우, 가능하다면 애플리케이션 서버 계층에서 SSLv3를 비활성화하여 CVE-2014-3566에 설명된 취약성을 해결하는 것이 좋습니다. 스택에 Ganglia 계층이 포함된 경우, 해당 계층에서도 SSL v3를 비활성화해야 합니다. 세부 사항은 구체적인 계층에 따라 다르므로 자세한 정보는 다음을 참조하세요.

1단계: OpenSSL 설치 및 구성

서버 인증서를 생성하고 업로드하려면 SSL 및 TLS 프로토콜을 지원하는 도구가 필요합니다. OpenSSL은 RSA 토큰을 만들고 사용자의 프라이빗 키를 사용하여 서명하는 데 필요한 기본 암호화 기능을 제공하는 오픈 소스 도구입니다.

다음 절차에서는 컴퓨터에 아직 OpenSSL이 설치되어 있지 않다고 가정합니다.

Linux 및 Unix에서 OpenSSL을 설치하려면
  1. OpenSSL: Source, Tarballs로 이동합니다.

  2. 최신 소스를 다운로드합니다.

  3. 패키지를 빌드합니다.

Windows에서 OpenSSL을 설치하려면
  1. Microsoft Visual C++ 2008 재배포 가능 패키지가 시스템에 아직 설치되지 않은 경우 패키지를 다운로드하세요.

  2. 설치 관리자를 실행하고 Microsoft Visual C++ 2008 재배포 가능 패키지 설치 마법사의 지침에 따라 설치합니다.

  3. OpenSSL: Binary Distributions로 이동하여 환경에 맞는 OpenSSL 바이너리 버전을 클릭하고 설치 관리자를 로컬에 저장합니다.

  4. 설치 관리자를 실행하고 OpenSSL 설치 마법사의 지침에 따라 바이너리를 설치합니다.

터미널 또는 명령 창을 열고 다음 명령줄을 사용하여 OpenSSL 설치 지점을 가리키는 환경 변수를 만듭니다.

  • Linux 및 Unix에서

    export OpenSSL_HOME=path_to_your_OpenSSL_installation
  • Windows

    set OpenSSL_HOME=path_to_your_OpenSSL_installation

터미널 또는 명령 창을 열고 다음 명령줄을 사용하여 OpenSSL 이진수 경로를 컴퓨터의 경로 변수에 추가합니다.

  • Linux 및 Unix에서

    export PATH=$PATH:$OpenSSL_HOME/bin
  • Windows

    set Path=OpenSSL_HOME\bin;%Path%
참고

이 명령줄을 사용한 환경 변수의 변경은 현재 명령줄 세션에만 유효합니다.

2단계: 프라이빗 키 생성

인증서 서명 요청(CSR)을 생성하려면 고유한 프라이빗 키가 필요합니다. 다음 명령줄을 사용하여 키를 생성합니다.

openssl genrsa 2048 > privatekey.pem

3단계: 인증서 서명 요청 생성

인증서 서명 요청(CSR)은 디지털 서버 인증서를 신청하기 위해 인증 기관(CA)으로 전송되는 파일입니다. 다음 명령줄을 사용하여 CSR을 생성합니다.

openssl req -new -key privatekey.pem -out csr.pem

명령의 출력은 다음과 비슷합니다.

You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank.

다음 표는 인증서 요청을 생성할 때 참조할 수 있습니다.

인증서 요청 데이터
명칭 설명
국가 이름 해당 국가의 두 자리 ISO 약자. US = 미국
주 또는 지방 해당 조직이 위치한 주 또는 지방의 이름. 이 이름은 약어로 사용할 수 없음. 워싱턴
시 이름 해당 조직이 위치한 주 또는 시의 이름. 시애틀
조직 이름 해당 조직의 정식 이름. 조직 이름의 약칭을 사용하지 마세요. CorporationX
조직 단위 (선택 사항) 조직에 대한 추가 정보. 마케팅
일반 이름 CNAME의 정규화된 도메인 이름. 이 이름이 정확하게 일치하지 않으면 인증서 이름 검사 경고를 받게 됩니다. www.example.com
이메일 주소 서버 관리자의 이메일 주소 someone@example.com
참고

일반 이름 필드는 종종 잘못 이해하여 잘못된 이름을 입력하는 경우가 많습니다. 일반 이름이란 호스트에 도메인 이름을 붙인 것입니다. 예를 들면 "www.example.com" 또는 "example.com"와 같은 형태입니다. 정확한 일반 이름을 사용하여 CSR을 생성해야 합니다.

4단계: 인증 기관에 CSR 제출

프로덕션용으로 CSR을 인증 기관(CA)에 제출하여 서버 인증서를 얻으려면 다른 자격 증명이나 ID 증명이 필요할 수 있습니다. 신청이 성공하면 CA에서 디지털 서명된 자격 증명 인증서와 가능한 경우 체인 인증서 파일을 보내 줍니다. AWS는 특정 CA를 추천하지 않습니다. 이용 가능한 일부 CA 목록을 보려면 Wikipedia에서 인증 기관 - 공급자를 참조하세요.

테스트 용도로만 사용할 수 있는 자체 서명된 인증서를 생성할 수도 있습니다. 이 예제에서는 다음 명령줄을 사용하여 자체 서명된 인증서를 생성합니다.

openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.crt

다음과 비슷한 출력이 표시될 것입니다.

Loading 'screen' into random state - done Signature ok subject=/C=us/ST=washington/L=seattle/O=corporationx/OU=marketing/CN=example.com/emailAddress=someone@example.com Getting Private key

5단계: 앱 편집

인증서를 생성하고 서명했으면 SSL을 사용할 수 있도록 앱을 업데이트하고 인증서 정보를 제공하세요. 페이지에서 세부 정보 페이지를 열 앱을 선택한 다음 앱 편집을 클릭합니다. SSL 지원을 활성화하려면 SSL 활성화로 설정합니다. 그러면 다음 구성 옵션이 표시됩니다.

SSL 인증서

퍼블릭 키 인증서(.crt) 파일의 콘텐츠를 상자에 붙여 넣습니다. 인증서는 다음과 비슷해야 합니다.

-----BEGIN CERTIFICATE----- MIICuTCCAiICCQCtqFKItVQJpzANBgkqhkiG9w0BAQUFADCBoDELMAkGA1UEBhMC dXMxEzARBgNVBAgMCndhc2hpbmd0b24xEDAOBgNVBAcMB3NlYXR0bGUxDzANBgNV BAoMBmFtYXpvbjEWMBQGA1UECwwNRGV2IGFuZCBUb29sczEdMBsGA1UEAwwUc3Rl cGhhbmllYXBpZXJjZS5jb20xIjAgBgkqhkiG9w0BCQEWE3NhcGllcmNlQGFtYXpv ... -----END CERTIFICATE-----
참고

Nginx를 사용하고 인증서 체인 파일이 있는 경우, 콘텐츠를 퍼블릭 키 인증서 파일에 추가해야 합니다.

기존 인증서를 업데이트하는 경우, 다음을 수행합니다.

  • SSL 인증서 업데이트를 선택해 인증서를 업데이트합니다.

  • 새 인증서가 기존 프라이빗 키와 맞지 않는 경우, SSL 인증서 키 업데이트를 선택합니다.

  • 새 인증서가 기존 인증서 체인과 맞지 않는 경우, SSL 인증서 업데이트를 선택합니다.

SSL 인증서 키

프라이빗 키 파일(.pem 파일)의 콘텐츠를 상자에 붙여 넣습니다. 다음과 같이 보여야 합니다.

----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQC0CYklJY5r4vV2NHQYEpwtsLuMMBhylMrgBShKq+HHVLYQQCL6 +wGIiRq5qXqZlRXje3GM5Jvcm6q0R71MfRIl1FuzKyqDtneZaAIEYniZibHiUnmO /UNqpFDosw/6hY3ONk0fSBlU4ivD0Gjpf6J80jL3DJ4R23Ed0sdL4pRT3QIDAQAB AoGBAKmMfWrNRqYVtGKgnWB6Tji9QrKQLMXjmHeGg95mppdJELiXHhpMvrHtpIyK ... -----END RSA PRIVATE KEY-----
[인증 기관의 SSL 인증서]

인증서 체인 파일이 있는 경우, 콘텐츠를 상자에 붙여 넣습니다.

참고

Nginx를 사용하는 경우, 이 상자를 비워 두어야 합니다. 인증서 체인 파일이 있는 경우, SSL 인증서에서 퍼블릭 키 인증서 파일에 추가해야 합니다.

[저장]을 클릭한 후 애플리케이션을 다시 배포하여 온라인 인스턴스를 업데이트합니다.

내장된 애플리케이션 서버 레이어의 경우 AWS OpsWorks Stacks는 서버 구성을 자동으로 업데이트합니다. 배포가 완료되면 다음과 같이 OpenSSL 설치가 제대로 되었는지 확인할 수 있습니다.

OpenSSL 설치를 확인하려면
  1. [인스턴스] 페이지로 이동합니다.

  2. 애플리케이션 서버의 IP 주소를 클릭하거나 로드 밸런서를 사용하는 경우에는 로드 밸런서의 IP 주소를 클릭하여 앱을 실행합니다.

  3. IP 주소 접두사를 http://에서 https://로 변경하고 브라우저를 새로 고쳐 SSL을 사용하여 페이지가 제대로 로드되는지 확인합니다.

사용자가 Mozilla Firefox에서 실행하도록 앱을 구성한 경우 다음과 같은 인증서 오류가 발생할 수 있습니다. SEC_ERROR_UNKNOWN_ISSUER 이 오류는 조직의 바이러스 백신 및 맬웨어 방지 프로그램의 인증서 교체 기능, 일부 유형의 네트워크 트래픽 모니터링 및 필터링 소프트웨어 또는 맬웨어로 인해 발생할 수 있습니다. 이 오류를 해결하는 방법에 대한 자세한 내용은 Mozilla Firefox 지원 웹 사이트의 보안 웹 사이트에서 보안 오류 코드의 문제를 해결하는 방법을 참조하세요.

사용자 지정 계층 등 다른 모든 계층의 경우, AWS OpsWorks Stacks는 앱의 deploy 속성에 SSL 설정을 단순히 추가합니다. 노드 객체에서 정보를 검색하고 서버를 적절히 구성하려면 사용자 지정 레시피를 구현해야 합니다.