X509 인증서 생성 및 서명 - AWS Elastic Beanstalk

X509 인증서 생성 및 서명

OpenSSL을 사용하여 애플리케이션의 X509 인증서를 생성할 수 있습니다. OpenSSL은 x509 인증서의 생성 및 서명을 비롯한 다양한 암호화 기능을 지원하는 표준 오픈 소스 라이브러리입니다. OpenSSL에 대한 자세한 내용은 www.openssl.org를 참조하십시오.

참고

단일 인스턴스 환경에서 HTTPS를 사용하거나 자체 서명된 인증서로 백엔드에서 다시 암호화하려는 경우 인증서를 로컬에서 생성하면 됩니다. 도메인 이름을 소유한 경우 AWS에서 인증서를 생성하고 AWS Certificate Manager(ACM)을 사용하여 로드 밸런싱 수행 환경에서 이를 무료로 사용할 수 있습니다. 자세한 내용은 AWS Certificate Manager 사용 설명서인증서 요청을 참조하세요.

OpenSSL이 이미 설치되어 있는지 확인하려면 명령줄에서 openssl version을 실행합니다. 설치되어 있지 않은 경우 퍼블릭 GitHub 리포지토리의 지침을 참조하여 소스 코드를 빌드하고 설치하거나, 선호하는 패키지 관리자를 사용할 수 있습니다. OpenSSL은 Elastic Beanstalk의 Linux 이미지에도 설치되어 있으므로 빠른 대안은 EB CLIeb ssh 명령을 사용하여 실행 중인 환경의 EC2 인스턴스에 연결하는 것입니다.

~/eb$ eb ssh [ec2-user@ip-255-55-55-255 ~]$ openssl version OpenSSL 1.0.1k-fips 8 Jan 2015

인증서 서명 요청(CSR)을 생성하려면 RSA 프라이빗 키를 생성해야 합니다. 프라이빗 키를 생성하려면 openssl genrsa 명령을 사용합니다.

[ec2-user@ip-255-55-55-255 ~]$ openssl genrsa 2048 > privatekey.pem Generating RSA private key, 2048 bit long modulus .................................................................................................................................+++ ...............+++ e is 65537 (0x10001)
privatekey.pem

프라이빗 키를 저장할 파일의 이름입니다. 일반적으로 openssl genrsa 명령은 프라이빗 키 내용을 화면에 인쇄하지만, 이 명령은 출력을 파일로 파이프합니다. 파일 이름을 선택한 후, 나중에 검색할 수 있도록 안전한 곳에 파일을 저장합니다. 프라이빗 키를 잃어버리면 인증서를 사용할 수 없습니다.

CSR은 디지털 서버 인증서를 신청하기 위해 인증 기관(CA)에 보내는 파일입니다. CSR을 생성하려면 openssl req 명령을 사용합니다.

$ 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.

요청된 정보를 입력하고 Enter(입력)를 누릅니다. 다음 표에 각 필드에 대한 설명과 예가 나와 있습니다.

이름 설명
국가 이름 해당 국가의 두 자리 ISO 약자. US = 미국
주 또는 지방 해당 조직이 위치한 주 또는 지방의 이름. 이 이름은 약어로 지정할 수 없습니다. 워싱턴
시 이름 해당 조직이 위치한 주 또는 시의 이름. 시애틀
조직 이름 해당 조직의 정식 이름. 조직 이름의 약칭을 사용하지 마십시오. Example Corporation
조직 단위 조직에 대한 추가 정보(선택 사항). 마케팅
일반 이름 웹 사이트의 정규화된 도메인 이름입니다. 이는 사용자가 사이트를 방문할 때 보는 도메인 이름과 일치해야 합니다. 그렇지 않으면 인증서 오류가 표시됩니다. www.example.com
이메일 주소 사이트 관리자의 이메일 주소입니다. someone@example.com

서명을 위해 서명 요청을 제3자에게 제출하거나, 개발 및 테스트를 위해 자체 서명할 수 있습니다. 자체 서명된 인증서는 로드 밸런서와 EC2 인스턴스 간의 백엔드 HTTPS에도 사용할 수 있습니다.

인증서에 서명하려면 openssl x509 명령을 사용합니다. 다음 예에서는 이전 단계의 프라이빗 키(privatekey.pem)와 서명 요청(csr.pem)을 사용하여 365일 동안 유효한 public.crt라는 퍼블릭 인증서를 생성합니다.

$ openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out public.crt Signature ok subject=/C=us/ST=washington/L=seattle/O=example corporation/OU=marketing/CN=www.example.com/emailAddress=someone@example.com Getting Private key

나중에 사용할 수 있도록 프라이빗 키와 퍼블릭 인증서를 보관하십시오. 서명 요청을 무시할 수 있습니다. 항상 안전한 위치에 프라이빗 키를 저장하고 소스 코드에 이를 추가하지 마십시오.

Windows Server 플랫폼에서 인증서를 사용하려면 이를 PFX 형식으로 변환해야 합니다. 다음 명령을 사용하여 프라이빗 키와 퍼블릭 인증서 파일에서 PFX 인증서를 생성합니다.

$ openssl pkcs12 -export -out example.com.pfx -inkey privatekey.pem -in public.crt Enter Export Password: password Verifying - Enter Export Password: password

이제 인증서가 있으므로 로드 밸런서에서 사용할 수 있도록 이를 IAM에 업로드하거나, HTTPS를 종료하도록 환경의 인스턴스를 구성할 수 있습니다.