

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

# AWS CloudHSM KSP와 함께 IIS를 사용하여 Windows에서 SSL/TLS 오프로드
<a name="ssl-offload-windows"></a>

이 자습서는 Windows 웹 서버에서 AWS CloudHSM 을 사용하여 SSL/TLS 오프로드를 설정하기 위한 단계별 지침을 제공합니다.

**Topics**
+ [개요](#ssl-offload-windows-overview)
+ [1단계: 사전 조건 설정](#ssl-offload-prerequisites-windows)
+ [단계 2: 인증서 서명 요청(CSR) 및 인증서 생성](#ssl-offload-windows-create-csr-and-certificate)
+ [3단계: 웹 서버 구성하기](#ssl-offload-configure-web-server-windows)
+ [4단계: HTTPS 트래픽 활성화 및 인증서 확인하기](#ssl-offload-enable-traffic-and-verify-certificate-windows)

## 개요
<a name="ssl-offload-windows-overview"></a>

Windows에서 [Windows Server용 IIS(인터넷 정보 서비스)](https://www.iis.net/) 웹 서버 애플리케이션은 기본적으로 HTTPS를 지원합니다. [Microsoft의 CNG(Cryptography API: Next Generation)용AWS CloudHSM KSP(Key Storage Provider)](ksp-library.md)는 IIS가 암호화 오프로딩 및 키 스토리지를 위해 클러스터에서 HSM을 사용할 수 있도록 인터페이스를 제공합니다. AWS CloudHSM KSP는 IIS를 AWS CloudHSM 클러스터에 연결하는 브리지입니다.

이 자습서에서는 다음을 수행하는 방법을 보여줍니다.
+ Amazon EC2 인스턴스에 웹 서버 소프트웨어를 설치합니다.
+  AWS CloudHSM 클러스터에 프라이빗 키가 저장되는 HTTPS를 지원하도록 웹 서버 소프트웨어를 구성합니다.
+ (선택 사항) Amazon EC2를 사용하여 두 번째 웹 서버 인스턴스를 만들고 Elastic Load Balancing을 사용하여 로드 밸런서를 만듭니다. 로드 밸런서를 사용하면 여러 서버에 부하를 분산하여 성능을 향상할 수 있습니다. 또한 하나 이상의 서버에 장애가 발생할 경우 중복성과 더 높은 가용성을 제공할 수 있습니다.

시작할 준비가 되면 [1단계: 사전 조건 설정](#ssl-offload-prerequisites-windows)로 이동합니다.

## 1단계: 사전 조건 설정
<a name="ssl-offload-prerequisites-windows"></a>

플랫폼마다 필요한 필수 조건이 다릅니다. 플랫폼에 맞는 아래의 사전 조건 섹션을 사용하세요.

**Topics**
+ [클라이언트 SDK 사전 조건 5](#ssl-offload-prerequisites-windows-sdk5)
+ [Client SDK 3의 필요 조건](#ssl-offload-prerequisites-windows-sdk3)

### 클라이언트 SDK 사전 조건 5
<a name="ssl-offload-prerequisites-windows-sdk5"></a>

를 사용하여 웹 서버 SSL/TLS 오프로드를 설정하려면 다음이 AWS CloudHSM필요합니다.
+ 하나 이상의 HSM이 있는 활성 AWS CloudHSM 클러스터입니다.
+ 다음 소프트웨어가 설치된 Window 운영 체제를 실행하는 Amazon EC2 인스턴스
  + Windows용 AWS CloudHSM 클라이언트 소프트웨어입니다.
  + Windows Server용 IIS(인터넷 정보 서비스).
+ HSM에서 웹 서버의 프라이빗 키를 소유하고 관리할 [CU(Crypto User)](understanding-users.md#crypto-user-chsm-cli)입니다.

**참고**  
이 자습서에서는 Microsoft Windows Server 2019를 사용합니다. Microsoft Windows Server 2016 및 2022는 지원되지 않습니다.

**HSM에서 Windows Server 인스턴스를 설정하고 CU를 생성하려면**

1. [시작하기](getting-started.md)의 단계를 수행하세요. Amazon EC2 클라이언트를 시작할 때 Windows Server 2019 AMI를 선택합니다. 해당 단계를 수행하면 한 개의 HSM이 있는 활성 클러스터가 생깁니다. Windows용 클라이언트 소프트웨어가 설치된 상태에서 Windows Server를 실행하는 Amazon EC2 AWS CloudHSM 클라이언트 인스턴스도 있습니다.

1. (선택 사항) 클러스터에 HSM을 더 추가합니다. 자세한 내용은 [AWS CloudHSM 클러스터에 HSM 추가](add-hsm.md) 섹션을 참조하십시오.

1. Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. CloudHSM CLI를 사용하여 CU(Crypto User)를 생성합니다. CU의 사용자 이름과 암호를 기록합니다. 다음 단계에서 해당 정보가 필요합니다.
**참고**  
사용자 생성에 대한 자세한 내용은 [CloudHSM CLI를 사용하여 HSM 사용자 관리](manage-hsm-users-chsm-cli.md)를 참조하십시오.

1. 이전 단계에서 생성한 CU 사용자 이름과 암호를 사용하여 [HSM의 로그인 자격 증명을 설정](ksp-library-authentication.md)합니다.

1. 5단계에서 Windows 자격 증명 관리자를 사용하여 HSM 자격 증명을 설정한 경우 SysInternals에서 [https://live.sysinternals.com/psexec.exe](https://live.sysinternals.com/psexec.exe)를 다운로드하여 다음 명령을 *NT Authority\$1SYSTEM*으로 실행합니다.

   ```
   psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username <USERNAME> --password <PASSWORD>
   ```

   *<USERNAME>*과 *<PASSWORD>*를 HSM 자격 증명으로 바꿉니다.

**Windows Server에 IIS를 설치하려면**

1. 아직 역할 추가 및 키를 생성하지 않은 경우 Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. Windows Server에서 **서버 관리자**를 시작합니다.

1. **서버 관리자** 대시보드에서 **역할 및 기능 추가**를 선택합니다.

1. **시작하기 전에** 정보를 읽은 후 **다음**을 선택합니다.

1. **Installation Type(설치 유형)**에서 **Role-based or feature-based installation(역할 기반 또는 기능 기반 설치)**을 선택합니다. 이후 **다음**을 선택합니다.

1. **서버 선택**에서 **서버 풀에서 서버 선택**을 선택합니다. 그런 다음 **다음**을 선택합니다.

1. **서버 역할**의 경우 다음을 수행합니다.

   1. **Web Server(IIS)(웹 서버(IIS))**를 선택합니다.

   1. **Add features that are required for Web Server (IIS)(웹 서버(IIS)에 필요한 기능 추가)**에서 **Add Features(기능 추가)**를 선택합니다.

   1. **다음**을 선택하여 서버 역할 선택을 마칩니다.

1. **Features(기능)**에 기본값을 적용합니다. 그리고 **다음**을 선택합니다.

1. **Web Server Role (IIS)(웹 서버 역할(IIS))** 정보를 읽습니다. 그리고 **다음**을 선택합니다.

1. **Select role services(역할 서비스 선택)**에서 기본 설정을 그대로 수락하거나 필요에 따라 설정을 변경합니다. 그리고 **다음**을 선택합니다.

1. **Confirmation(확인)**에서 확인 정보를 읽은 후 **Install(설치)**을 선택합니다.

1. 설치가 완료되면 **Close(닫기)**를 클릭합니다.

이 단계들을 완료한 후 [단계 2: 인증서 서명 요청(CSR) 및 인증서 생성](#ssl-offload-windows-create-csr-and-certificate)로 이동합니다.

### Client SDK 3의 필요 조건
<a name="ssl-offload-prerequisites-windows-sdk3"></a>

를 사용하여 웹 서버 SSL/TLS 오프로드를 설정하려면 다음이 AWS CloudHSM필요합니다.
+ 하나 이상의 HSM이 있는 활성 AWS CloudHSM 클러스터입니다.
+ 다음 소프트웨어가 설치된 Window 운영 체제를 실행하는 Amazon EC2 인스턴스
  + Windows용 AWS CloudHSM 클라이언트 소프트웨어입니다.
  + Windows Server용 IIS(인터넷 정보 서비스).
+ HSM에서 웹 서버의 프라이빗 키를 소유하고 관리할 [CU(Crypto User)](understanding-users.md#crypto-user-chsm-cli)입니다.

**참고**  
이 자습서에서는 Microsoft Windows Server 2016을 사용합니다. Microsoft Windows Server 2012 역시 지원되지만, Microsoft Windows Server 2012 R2는 지원되지 않습니다.

**HSM에서 Windows Server 인스턴스를 설정하고 CU를 생성하려면**

1. [시작하기](getting-started.md)의 단계를 수행하세요. Amazon EC2 클라이언트를 시작할 때 Windows Server 2016 또는 Windows Server 2012 AMI를 선택합니다. 해당 단계를 수행하면 한 개의 HSM이 있는 활성 클러스터가 생깁니다. Windows용 클라이언트 소프트웨어가 설치된 상태에서 Windows Server를 실행하는 Amazon EC2 AWS CloudHSM 클라이언트 인스턴스도 있습니다.

1. (선택 사항) 클러스터에 HSM을 더 추가합니다. 자세한 내용은 [AWS CloudHSM 클러스터에 HSM 추가](add-hsm.md) 섹션을 참조하십시오.

1. Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. CloudHSM CLI를 사용하여 CU(Crypto User)를 생성합니다. CU의 사용자 이름과 암호를 기록합니다. 다음 단계에서 해당 정보가 필요합니다.
**참고**  
사용자 생성에 대한 자세한 내용은 [CloudHSM CLI를 사용하여 HSM 사용자 관리](manage-hsm-users-chsm-cli.md)를 참조하십시오.

1. 이전 단계에서 생성한 CU 사용자 이름과 암호를 사용하여 [HSM의 로그인 자격 증명을 설정](ksp-library-prereq.md)합니다.

1. 5단계에서 Windows 자격 증명 관리자를 사용하여 HSM 자격 증명을 설정한 경우 SysInternals에서 [https://live.sysinternals.com/psexec.exe](https://live.sysinternals.com/psexec.exe)를 다운로드하여 다음 명령을 *NT Authority\$1SYSTEM*으로 실행합니다.

   ```
   psexec.exe -s "C:\Program Files\Amazon\CloudHsm\tools\set_cloudhsm_credentials.exe" --username <USERNAME> --password <PASSWORD>
   ```

   *<USERNAME>*과 *<PASSWORD>*를 HSM 자격 증명으로 바꿉니다.

**Windows Server에 IIS를 설치하려면**

1. 아직 역할 추가 및 키를 생성하지 않은 경우 Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. Windows Server에서 **서버 관리자**를 시작합니다.

1. **서버 관리자** 대시보드에서 **역할 및 기능 추가**를 선택합니다.

1. **시작하기 전에** 정보를 읽은 후 **다음**을 선택합니다.

1. **Installation Type(설치 유형)**에서 **Role-based or feature-based installation(역할 기반 또는 기능 기반 설치)**을 선택합니다. 이후 **다음**을 선택합니다.

1. **서버 선택**에서 **서버 풀에서 서버 선택**을 선택합니다. 그런 다음 **다음**을 선택합니다.

1. **서버 역할**의 경우 다음을 수행합니다.

   1. **Web Server(IIS)(웹 서버(IIS))**를 선택합니다.

   1. **Add features that are required for Web Server (IIS)(웹 서버(IIS)에 필요한 기능 추가)**에서 **Add Features(기능 추가)**를 선택합니다.

   1. **다음**을 선택하여 서버 역할 선택을 마칩니다.

1. **Features(기능)**에 기본값을 적용합니다. 그리고 **다음**을 선택합니다.

1. **Web Server Role (IIS)(웹 서버 역할(IIS))** 정보를 읽습니다. 그리고 **다음**을 선택합니다.

1. **Select role services(역할 서비스 선택)**에서 기본 설정을 그대로 수락하거나 필요에 따라 설정을 변경합니다. 그리고 **다음**을 선택합니다.

1. **Confirmation(확인)**에서 확인 정보를 읽은 후 **Install(설치)**을 선택합니다.

1. 설치가 완료되면 **Close(닫기)**를 클릭합니다.

이 단계들을 완료한 후 [단계 2: 인증서 서명 요청(CSR) 및 인증서 생성](#ssl-offload-windows-create-csr-and-certificate)로 이동합니다.

## 단계 2: 인증서 서명 요청(CSR) 및 인증서 생성
<a name="ssl-offload-windows-create-csr-and-certificate"></a>

HTTPS를 활성화하려면 웹 서버에서 SSL/TLS 인증서와 해당되는 프라이빗 키가 필요합니다. 에서 SSL/TLS 오프로드를 사용하려면 클러스터의 HSM에 AWS CloudHSM 프라이빗 키를 AWS CloudHSM저장합니다. 이렇게 하려면 [Microsoft의 CNG(Cryptography API: Next Generation)용AWS CloudHSM KSP(Key Storage Provider)](ksp-v3-library.md)를 사용하여 인증서 서명 요청(CSR)을 생성합니다. 그런 다음, 인증서 생성을 위해 CSR에 서명하는 인증 기관(CA)에 CSR을 제공합니다.

**Topics**
+ [클라이언트 SDK 5를 사용하여 CSR 생성](#ssl-offload-windows-create-csr-new-version)
+ [클라이언트 SDK 3를 사용하여 CSR 생성](#ssl-offload-windows-create-csr-old-version)
+ [서명된 인증서를 받아 가져옵니다.](#ssl-offload-windows-create-certificate)

### 클라이언트 SDK 5를 사용하여 CSR 생성
<a name="ssl-offload-windows-create-csr-new-version"></a>

1. Windows Server에서 텍스트 편집기를 사용하여 `IISCertRequest.inf`라는 인증서 요청을 생성합니다. 다음 예제에서는 `IISCertRequest.inf` 파일의 내용을 보여 줍니다. 이 파일에서 지정할 수 있는 섹션, 키 및 값에 대한 자세한 내용은 [Microsoft 설명서](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New)를 참조하십시오. `ProviderName` 값은 변경하지 마십시오.

   ```
   [Version]
   Signature = "$Windows NT$"
   [NewRequest]
   Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer"
   HashAlgorithm = SHA256
   KeyAlgorithm = RSA
   KeyLength = 2048
   ProviderName = "CloudHSM Key Storage Provider"
   KeyUsage = 0xf0
   MachineKeySet = True
   [EnhancedKeyUsageExtension]
   OID=1.3.6.1.5.5.7.3.1
   ```

1. [Windows **certreq** 명령](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1)을 사용하여 이전 단계에서 생성한 `IISCertRequest.inf` 파일에서 CSR을 생성합니다. 다음 예제에서는 CSR을 `IISCertRequest.csr`이라는 파일에 저장합니다. 인증서 요청 파일에서 다른 파일 이름을 사용한 경우에는 *IISCertRequest.inf*를 해당되는 파일 이름으로 바꿉니다. 선택에 따라 CSR 파일에서 *IISCertRequest.csr*을 다른 파일 이름으로 바꿀 수 있습니다.

   ```
   C:\>certreq -new IISCertRequest.inf IISCertRequest.csr
   
   CertReq: Request Created
   ```

   `IISCertRequest.csr` 파일에는 CSR이 포함되어 있습니다. 서명된 인증서를 얻기 위해서는 이 CSR이 필요합니다.

### 클라이언트 SDK 3를 사용하여 CSR 생성
<a name="ssl-offload-windows-create-csr-old-version"></a>

1. 아직 역할 추가 및 키를 생성하지 않은 경우 Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. 다음 명령을 사용하여 AWS CloudHSM 클라이언트 데몬을 시작합니다.

------
#### [ Amazon Linux ]

   ```
   $ sudo start cloudhsm-client
   ```

------
#### [ Amazon Linux 2 ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ CentOS 7 ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ CentOS 8 ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ RHEL 7 ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ RHEL 8 ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ Ubuntu 16.04 LTS ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ Ubuntu 18.04 LTS ]

   ```
   $ sudo service cloudhsm-client start
   ```

------
#### [ Windows ]
   + Windows 클라이언트 1.1.2\$1의 경우:

     ```
     C:\Program Files\Amazon\CloudHSM>net.exe start AWSCloudHSMClient
     ```
   + Windows 클라이언트 1.1.1 이상의 경우:

     ```
     C:\Program Files\Amazon\CloudHSM>start "cloudhsm_client" cloudhsm_client.exe C:\ProgramData\Amazon\CloudHSM\data\cloudhsm_client.cfg
     ```

------

1. Windows Server에서 텍스트 편집기를 사용하여 `IISCertRequest.inf`라는 인증서 요청을 생성합니다. 다음 예제에서는 `IISCertRequest.inf` 파일의 내용을 보여 줍니다. 이 파일에서 지정할 수 있는 섹션, 키 및 값에 대한 자세한 내용은 [Microsoft 설명서](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1#BKMK_New)를 참조하십시오. `ProviderName` 값은 변경하지 마십시오.

   ```
   [Version]
   Signature = "$Windows NT$"
   [NewRequest]
   Subject = "CN=example.com,C=US,ST=Washington,L=Seattle,O=ExampleOrg,OU=WebServer"
   HashAlgorithm = SHA256
   KeyAlgorithm = RSA
   KeyLength = 2048
   ProviderName = "Cavium Key Storage Provider"
   KeyUsage = 0xf0
   MachineKeySet = True
   [EnhancedKeyUsageExtension]
   OID=1.3.6.1.5.5.7.3.1
   ```

1. [Windows **certreq** 명령](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1)을 사용하여 이전 단계에서 생성한 `IISCertRequest.inf` 파일에서 CSR을 생성합니다. 다음 예제에서는 CSR을 `IISCertRequest.csr`이라는 파일에 저장합니다. 인증서 요청 파일에서 다른 파일 이름을 사용한 경우에는 *IISCertRequest.inf*를 해당되는 파일 이름으로 바꿉니다. 선택에 따라 CSR 파일에서 *IISCertRequest.csr*을 다른 파일 이름으로 바꿀 수 있습니다.

   ```
   C:\>certreq -new IISCertRequest.inf IISCertRequest.csr
           SDK Version: 2.03
   
   CertReq: Request Created
   ```

   `IISCertRequest.csr` 파일에는 CSR이 포함되어 있습니다. 서명된 인증서를 얻기 위해서는 이 CSR이 필요합니다.

### 서명된 인증서를 받아 가져옵니다.
<a name="ssl-offload-windows-create-certificate"></a>

프로덕션 환경에서는 일반적으로 CA(인증 기관)을 사용하여 CSR에서 인증서를 생성합니다. 테스트 환경에는 CA가 필요하지 않습니다. CA를 사용하는 경우에는 CSR 파일(`IISCertRequest.csr`)을 CA에 전송하고 CA를 사용하여 서명된 SSL/TLS 인증서를 생성합니다.

CA 사용의 대안으로 [OpenSSL](https://www.openssl.org/) 같은 도구를 사용하여 자체 서명 인증서를 생성할 수 있습니다.

**주의**  
자체 사인된 인증서는 브라우저에서 신뢰하지 않으며 프로덕션 환경에서 사용해서는 안 됩니다. 테스트 환경에서는 이러한 인증서를 사용할 수 있습니다.

다음 절차에서는 자체 서명 인증서를 생성하고 이를 사용해 웹 서버의 CSR을 서명하는 방법을 보여줍니다.

**자체 서명된 인증서를 생성하려면**

1. OpenSSL 명령을 사용하여 프라이빗 키를 생성합니다. 선택에 따라 *SelfSignedCA.key*를 프라이빗 키가 포함된 파일 이름으로 바꿀 수 있습니다.

   ```
   openssl genrsa -aes256 -out SelfSignedCA.key 2048
   Generating RSA private key, 2048 bit long modulus
   ......................................................................+++
   .........................................+++
   e is 65537 (0x10001)
   Enter pass phrase for SelfSignedCA.key:
   Verifying - Enter pass phrase for SelfSignedCA.key:
   ```

1. OpenSSL 명령을 사용하여 이전 단계에서 생성한 프라이빗 키를 통해 자체 서명 인증서를 생성합니다. 이것은 대화식 명령입니다. 화면의 지침을 읽고 프롬프트의 메시지를 따릅니다. *SelfSignedCA.key*를 프라이빗 키(다를 경우)가 포함된 파일 이름으로 바꿉니다. 선택에 따라 *SelfSignedCA.crt*를 자체 서명 인증서가 포함된 파일 이름으로 바꿀 수 있습니다.

   ```
   openssl req -new -x509 -days 365 -key SelfSignedCA.key -out SelfSignedCA.crt
   Enter pass phrase for SelfSignedCA.key:
   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.
   -----
   Country Name (2 letter code) [AU]:
   State or Province Name (full name) [Some-State]:
   Locality Name (eg, city) []:
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:
   Organizational Unit Name (eg, section) []:
   Common Name (e.g. server FQDN or YOUR name) []:
   Email Address []:
   ```

**자체 서명 인증서를 사용하여 웹 서버의 CSR을 서명하려면**
+ 다음 OpenSSL 명령을 사용해 프라이빗 키와 자체 서명 인증서를 통해 CSR을 서명합니다. 다음을 해당 데이터(다를 경우)가 포함된 파일 이름으로 바꿉니다.
  + *IISCertRequest.csr* – 웹 서버의 CSR이 포함된 파일 이름
  + *SelfSignedCA.crt* – 자체 서명된 인증서가 포함된 파일의 이름
  + *SelfSignedCA.key* – 개인 키가 포함된 파일 이름
  + *IISCert.crt* – 웹 서버의 서명된 인증서를 포함하는 파일의 이름

  ```
  openssl x509 -req -days 365 -in IISCertRequest.csr \
                              -CA SelfSignedCA.crt \
                              -CAkey SelfSignedCA.key \
                              -CAcreateserial \
                              -out IISCert.crt
  Signature ok
  subject=/ST=IIS-HSM/L=IIS-HSM/OU=IIS-HSM/O=IIS-HSM/CN=IIS-HSM/C=IIS-HSM
  Getting CA Private Key
  Enter pass phrase for SelfSignedCA.key:
  ```

이전 단계를 완료하고 나면 웹 서버에 대한 서명 인증서(`IISCert.crt`)와 자체 서명 인증서(`SelfSignedCA.crt`)를 얻게 됩니다. 이러한 파일을 얻었으면 [3단계: 웹 서버 구성하기](#ssl-offload-configure-web-server-windows)로 이동합니다.

## 3단계: 웹 서버 구성하기
<a name="ssl-offload-configure-web-server-windows"></a>

[이전 단계](#ssl-offload-windows-create-csr-and-certificate)가 끝날 때 생성한 HTTPS 인증서를 사용하려면 IIS 웹사이트의 구성을 업데이트하십시오. 그러면 AWS CloudHSM이 지원되는 SSL/TLS 오프로드의 Windows 웹 서버 소프트웨어(IIS) 설정이 완료됩니다.

CSR 서명을 위해 자체 서명 인증서를 사용한 경우에는 먼저 신뢰할 수 있는 Windows 루트 인증 기관에 자체 서명 인증서를 가져와야 합니다.

**자체 서명 인증서를 신뢰할 수 있는 Windows 루트 인증 기관에 가져오려면**

1. 아직 역할 추가 및 키를 생성하지 않은 경우 Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1. Windows Server에 자체 서명 인증서를 복사합니다.

1. Windows Server에서 **제어판**을 엽니다.

1. **제어판 검색**에 **certificates**를 입력합니다. 그런 다음 **컴퓨터 인증서 관리**를 선택합니다.

1. **인증서 - 로컬 컴퓨터** 창에서 **신뢰할 수 있는 루트 인증 기관**을 두 번 클릭합니다.

1. **인증서**를 마우스 오른쪽 버튼으로 클릭하고 **모든 작업**, **가져오기**를 선택합니다.

1. **인증서 가져오기 마법사**에서 **다음**을 선택합니다.

1. **찾아보기**에서 자체 서명 인증서를 찾아서 선택합니다. [이 자습서의 이전 단계](#ssl-offload-windows-create-csr-and-certificate)에 나와 있는 지침에 따라 생성한 자체 서명 인증서는 이름이 `SelfSignedCA.crt`으로 지정됩니다. **열기**를 선택합니다.

1. **다음**을 선택합니다.

1. **Certificate Store**에서 **다음 스토어에 모든 인증서 배치**를 선택합니다. 그런 다음 **인증서 저장소**에 **신뢰할 수 있는 루트 인증 기관이** 선택되었는지 확인하십시오.

1. **다음**을 선택한 다음 **마침**을 선택합니다.

**IIS 웹사이트의 구성 업데이트**

1. 아직 역할 추가 및 키를 생성하지 않은 경우 Windows Server에 연결합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)을 참조하세요.

1.  AWS CloudHSM 클라이언트 데몬을 시작합니다.

1. 웹 서버의 서명된 인증서 복사 - [이 자습서의 이전 단계](#ssl-offload-windows-create-csr-and-certificate)가 끝날 때 생성한 인증서를 Windows 서버에 복사합니다.

1. Windows Server에서 다음 예제에서와 같이 [Windows **certreq** 명령](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/certreq_1)을 사용하여 서명 인증서를 수락합니다. *IISCert.crt*를 웹 서버의 서명 인증서가 포함된 파일 이름으로 바꿉니다.

   ```
   C:\>certreq -accept IISCert.crt
           SDK Version: 2.03
   ```

1. Windows Server에서 **서버 관리자**를 시작합니다.

1. **서버 관리자** 대시보드의 오른쪽 상단 모서리에서 **도구**, **인터넷 정보 서비스(IIS) 관리자**를 선택합니다.

1. **인터넷 정보 서비스(IIS) 관리자** 창에서 서버 이름을 두 번 클릭합니다. 그런 다음 **사이트**를 두 번 클릭합니다. 웹사이트를 선택합니다.

1. **SSL 설정**을 선택합니다. 그런 다음 창의 오른쪽에서 **바인딩**을 선택합니다.

1. **사이트 바인딩** 창에서 **추가**를 선택합니다.

1. **유형**에서 **https**를 선택합니다. **SSL 인증서**에서 [이 자습서의 이전 단계](#ssl-offload-windows-create-csr-and-certificate)가 끝날 때 생성한 HTTPS 인증서를 선택합니다.
**참고**  
이 인증서 바인딩 중에 오류가 발생하면, 서버를 다시 시작하고 이 단계를 다시 시도하십시오.

1. **확인**를 선택합니다.

웹사이트의 구성을 업데이트한 후에 [4단계: HTTPS 트래픽 활성화 및 인증서 확인하기](#ssl-offload-enable-traffic-and-verify-certificate-windows)로 이동합니다.

## 4단계: HTTPS 트래픽 활성화 및 인증서 확인하기
<a name="ssl-offload-enable-traffic-and-verify-certificate-windows"></a>

를 사용하여 SSL/TLS 오프로드를 위해 웹 서버를 구성한 후 인바운드 HTTPS 트래픽을 허용하는 보안 그룹에 웹 서버 인스턴스를 AWS CloudHSM추가합니다. 이렇게 하면 웹 브라우저와 같은 클라이언트가 웹 서버와 HTTPS 연결을 설정할 수 있습니다. 그런 다음 웹 서버에 HTTPS를 연결하고 SSL/TLS 오프로드에 대해 구성한 인증서를 사용하고 있는지 확인합니다 AWS CloudHSM.

**Topics**
+ [인바운드 HTTPS 연결 활성화](#ssl-offload-add-security-group-windows)
+ [HTTPS가 사용자가 구성한 인증서를 사용하는지 확인](#ssl-offload-verify-https-connection-windows)

### 인바운드 HTTPS 연결 활성화
<a name="ssl-offload-add-security-group-windows"></a>

클라이언트(예: 웹 서버)에서 웹 서버에 연결하려면 인바운드 HTTPS 연결을 허용하는 보안 그룹을 생성합니다. 구체적으로 포트 443에서 인바운드 TCP 연결을 허용해야 합니다. 이 보안 그룹을 웹 서버에 할당합니다.

**HTTPS용 보안 그룹을 생성하여 웹 서버에 할당하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **보안 그룹**을 선택합니다.

1. **보안 그룹 생성**을 선택합니다.

1. **보안 그룹 생성**에서 다음을 수행합니다.

   1. **보안 그룹 이름**에 생성하려는 보안 그룹의 이름을 입력합니다.

   1. (선택 사항) 생성하려는 보안 그룹에 대한 설명을 입력합니다.

   1. 웹 서버 Amazon EC2 인스턴스가 포함된 VPC를 **VPC**로 선택합니다.

   1. **규칙 추가**를 선택합니다.

   1. 드롭다운 창에서 **HTTPS**를 **유형**으로 선택합니다.

   1. **소스**에 소스 위치를 입력합니다.

   1. **보안 그룹 생성**을 선택합니다.

1. 탐색 창에서 **인스턴스(Instances)**를 선택합니다.

1. 웹 서버 인스턴스 옆에 있는 확인란을 선택합니다.

1. 페이지 상단의 **작업** 드롭다운 메뉴를 선택합니다. **보안**을 선택한 다음 **보안 그룹 변경**을 선택합니다.

1. **연결된 보안 그룹**에서 검색 상자를 선택하고 HTTPS용으로 생성한 보안 그룹을 선택합니다. 그런 다음 **보안 그룹 추가**를 선택합니다.

1. **저장**을 선택합니다.

### HTTPS가 사용자가 구성한 인증서를 사용하는지 확인
<a name="ssl-offload-verify-https-connection-windows"></a>

웹 서버를 보안 그룹에 추가한 후 SSL/TLS 오프로드가 자체 서명 인증서를 사용하고 있는지 확인할 수 있습니다. 웹 브라우저 또는 [OpenSSL s\$1client](https://www.openssl.org/docs/manmaster/man1/s_client.html)와 같은 도구를 사용하여 이 작업을 수행할 수 있습니다.

**웹 브라우저를 사용하여 SSL/TLS 오프로드를 확인하려면**

1. 웹 브라우저를 사용하여 서버의 퍼블릭 DNS 이름 또는 IP 주소를 사용해 웹 서버에 연결합니다. 주소 표시줄의 URL이 https://로 시작하는지 확인합니다. 예를 들어 **https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/**입니다.
**작은 정보**  
Amazon Route 53과 같은 DNS 서비스를 사용하여 웹사이트의 도메인 이름(예: https://www.example.com/)을 웹 서버로 라우팅할 수 있습니다. 자세한 내용은 *Amazon Route 53 개발자 안내서* 또는 DNS 서비스 설명서의 [Amazon EC2 인스턴스로 트래픽 라우팅](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-ec2-instance.html)을 참조하십시오.

1. 웹 브라우저를 사용하여 웹 서버 인증서를 봅니다. 자세한 내용은 다음을 참조하십시오.
   + Mozilla Firefox의 경우 Mozilla Support 웹 사이트의 [View a Certificate(인증서 보기)](https://support.mozilla.org/en-US/kb/secure-website-certificate#w_view-a-certificate)를 참조하십시오.
   + Google Chrome의 경우 Google Tools for Web Developers 웹 사이트의 [보안 문제 이해](https://developers.google.com/web/tools/chrome-devtools/security)를 참조하십시오.

   다른 웹 브라우저에도 웹 서버 인증서를 보는 데 사용할 수 있는 유사한 기능이 있을 수 있습니다.

1. SSL/TLS 인증서가 웹 서버에서 사용하도록 구성한 것인지 확인합니다.

**OpenSSL s\$1client를 사용하여 SSL/TLS 오프로드를 확인하려면**

1. 다음 OpenSSL 명령을 실행하여 HTTPS를 사용해 웹 서버에 연결합니다. *<server name>*을 웹 서버의 퍼블릭 DNS 이름 또는 IP 주소로 바꿉니다.

   ```
   openssl s_client -connect <server name>:443
   ```
**작은 정보**  
Amazon Route 53과 같은 DNS 서비스를 사용하여 웹사이트의 도메인 이름(예: https://www.example.com/)을 웹 서버로 라우팅할 수 있습니다. 자세한 내용은 *Amazon Route 53 개발자 안내서* 또는 DNS 서비스 설명서에서 [Amazon EC2 인스턴스로의 라우팅 트래픽](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-ec2-instance.html)을 참조하십시오.

1. SSL/TLS 인증서가 웹 서버에서 사용하도록 구성한 것인지 확인합니다.

이제 웹 사이트가 HTTPS로 보안됩니다. 웹 서버의 프라이빗 키는 AWS CloudHSM 클러스터의 HSM에 저장됩니다.

로드 밸런서를 추가하려면 [Elastic Load Balancing을 사용하여 로드 밸런서 추가 AWS CloudHSM(선택 사항)](third-offload-add-lb.md) 섹션을 참조하십시오.