

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

# X509 인증서 생성 및 서명
<a name="configuring-https-ssl"></a>

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

**참고**  
[단일 인스턴스 환경에서 HTTPS를 사용](https-singleinstance.md)하거나 자체 서명된 인증서로 [백엔드에서 다시 암호화](configuring-https-endtoend.md)하려는 경우 인증서를 로컬에서 생성하면 됩니다. 도메인 이름을 소유한 경우에서 인증서를 생성하고 AWS Certificate Manager (ACM)을 사용하여 로드 밸런싱된 환경에서 무료로 AWS 사용할 수 있습니다. 자세한 내용은 *AWS Certificate Manager 사용 설명서*의 [인증서 요청](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)을 참조하세요.

OpenSSL이 이미 설치되어 있는지 확인하려면 명령줄에서 `openssl version`을 실행합니다. 설치되어 있지 않은 경우 [퍼블릭 GitHub 리포지토리](https://github.com/openssl/openssl)의 지침을 참조하여 소스 코드를 빌드하고 설치하거나, 선호하는 패키지 관리자를 사용할 수 있습니다. OpenSSL은 Elastic Beanstalk의 Linux 이미지에도 설치되어 있으므로 빠른 대안은 [EB CLI](eb-cli3.md)의 **eb 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
```

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

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에 업로드](configuring-https-ssl-upload.md)하거나, [HTTPS를 종료하도록 환경의 인스턴스를 구성](https-singleinstance.md)할 수 있습니다.