

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

# 클라이언트와 간에 상호 TLS 설정 AWS CloudHSM (권장)
<a name="getting-started-setup-mtls"></a>

다음 주제에서는 클라이언트와 간의 상호 전송 계층 보안(mTLS)을 활성화하기 위해 완료해야 하는 단계를 설명합니다 AWS CloudHSM.

**고려 사항**
+ 현재 이 기능은 hsm2m.medium에서만 사용할 수 있습니다. HSM 유형에 대한 자세한 내용은 [AWS CloudHSM 클러스터 모드](cluster-hsm-types.md) 섹션을 참조하세요.
+ mTLS는와 함께 사용되는 AWS CloudHSM 키 스토어에서는 지원되지 않습니다 AWS Key Management Service.

**Topics**
+ [1단계. HSM에 트러스트 앵커 생성 및 등록](#setup-mtls-create-and-register-trust-anchor)
+ [2단계. 에 대해 mTLS 활성화 AWS CloudHSM](#getting-start-setup-mtl-sdk)
+ [3단계. 에 대한 mTLS 적용 설정 AWS CloudHSM](#getting-start-setup-mtls-enforcement)

## 1단계. HSM에 트러스트 앵커 생성 및 등록
<a name="setup-mtls-create-and-register-trust-anchor"></a>

mTLS를 활성화하기 전에 트러스트 앵커를 생성하고 HSM에 등록해야 합니다. 다음 2단계 프로세스로 진행됩니다.

**Topics**
+ [프라이빗 키 및 자체 서명된 루트 인증서 생성](#setup-mtls-create-trust-anchor)
+ [HSM에 트러스트 앵커 등록](#setup-mtls-register-trust-anchor)

### 프라이빗 키 및 자체 서명된 루트 인증서 생성
<a name="setup-mtls-create-trust-anchor"></a>

**참고**  
프로덕션 클러스터의 경우 신뢰할 수 있는 임의 소스를 사용하여 안전한 방식으로 키를 생성해야 합니다. 안전한 오프사이트 및 오프라인 HSM이나 이에 상응하는 디바이스를 사용하는 것이 좋습니다. 키를 안전하게 저장하십시오.  
개발 및 테스트 중에 원하는 편리한 도구(예: OpenSSL)를 사용하여 키를 만들고 루트 인증서에 자체 서명할 수 있습니다. [mTLS 활성화 AWS CloudHSM](#getting-start-setup-mtl-sdk)에서 클라이언트 인증서에 서명하려면 키와 루트 인증서가 필요합니다.

다음 예제에서는 [OpenSSL](https://www.openssl.org/)을 사용하여 프라이빗 키 및 자체 서명된 루트 인증서를 생성하는 방법을 보여줍니다.

**Example — OpenSSL을 사용하여 개인 키를 생성하세요**  
다음 명령을 사용하여 AES-256 알고리즘으로 암호화된 4096비트 RSA 키를 생성합니다. 이 예를 사용하려면 *<mtls\$1ca\$1root\$11.key>*를 키를 저장하려는 파일 이름으로 바꿉니다.  

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

**Example – OpenSSL을 사용하여 자체 서명된 루트 인증서 생성**  
다음 명령을 사용하여 방금 생성한 프라이빗 키에서 `mtls_ca_root_1.crt`라는 자체 서명된 루트 인증서를 생성합니다. 인증서는 25년(9130일) 동안 유효합니다. 화면의 지침을 읽고 프롬프트의 메시지를 따릅니다.  

```
$ openssl req -new -x509 -days 9130 -key mtls_ca_root_1.key -out mtls_ca_root_1.crt
Enter pass phrase for mtls_ca_root_1.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 []:
```

### HSM에 트러스트 앵커 등록
<a name="setup-mtls-register-trust-anchor"></a>

자체 서명된 루트 인증서를 생성한 후 관리자는 이를 AWS CloudHSM 클러스터에 트러스트 앵커로 등록해야 합니다.

**HSM에 트러스트 앵커를 등록하려면**

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. ** [CloudHSM CLI를 사용하여 트러스트 앵커 등록](cloudhsm_cli-cluster-mtls-register-trust-anchor.md) ** 명령을 사용하여 트러스트 앵커를 등록합니다. 자세한 내용은 다음 예제를 참조하거나 **help cluster mtls register-trust-anchor** 명령을 사용하십시오.

**Example - AWS CloudHSM 클러스터에 트러스트 앵커 등록**  
다음 예제에서는 CloudHSM CLI에서 **cluster mtls register-trust-anchor** 명령을 사용하여 트러스트 앵커를 HSM에 등록하는 방법을 보여줍니다. 이 명령을 사용하려면 관리자가 HSM에 로그인되어 있어야 합니다. 이 값들을 사용자의 값으로 대체합니다.  

```
aws-cloudhsm > cluster mtls register-trust-anchor --path </path/mtls_ca_root_1.crt>
{
  "error_code": 0,
  "data": {
    "trust_anchor": {
      "certificate-reference": "0x01",
      "certificate": "<PEM Encoded Certificate>",
      "cluster-coverage": "full"
    }
  }
}
```
AWS CloudHSM 는 중간 인증서를 트러스트 앵커로 등록할 수 있도록 지원합니다. 이러한 경우 전체 PEM 인코딩 인증서 체인 파일을 계층 순서로 HSM에 등록해야 합니다.  
 AWS CloudHSM 는 6980바이트의 인증서 체인을 지원합니다.
트러스트 앵커를 성공적으로 등록한 후 **cluster mtls list-trust-anchors** 명령을 실행하여 다음과 같이 현재 등록된 트러스트 앵커를 확인할 수 있습니다.  

```
aws-cloudhsm > cluster mtls list-trust-anchors
{
  "error_code": 0,
  "data": {
    "trust_anchors": [
      {
        "certificate-reference": "0x01",
        "certificate": "<PEM Encoded Certificate>",
        "cluster-coverage": "full"
      }
    ]
  }
}
```
 hsm2m.medium에 등록할 수 있는 최대 트러스트 앵커 수는 두 개(2)입니다.

## 2단계. 에 대해 mTLS 활성화 AWS CloudHSM
<a name="getting-start-setup-mtl-sdk"></a>

mTLS를 활성화하려면 [HSM에 트러스트 앵커 생성 및 등록](#setup-mtls-create-and-register-trust-anchor)에서 생성한 루트 인증서로 서명된 프라이빗 키와 클라이언트 인증서를 생성한 다음 클라이언트 SDK 5 구성 도구를 사용하여 프라이빗 키 경로와 클라이언트 인증서 체인 경로를 설정해야 AWS CloudHSM합니다.

**Topics**
+ [프라이빗 키 및 클라이언트 인증서 체인 생성](#create-client-ssl)
+ [클라이언트 SDK 5용 mTLS 구성](#enable-ssl-5)

### 프라이빗 키 및 클라이언트 인증서 체인 생성
<a name="create-client-ssl"></a>

**Example — OpenSSL을 사용하여 개인 키를 생성하세요**  
다음 명령을 사용하여 4096비트 RSA 키를 생성합니다. 이 예를 사용하려면 *<ssl-client.key>*를 키를 저장하려는 파일 이름으로 바꿉니다.  

```
$ openssl genrsa -out <ssl-client.key> 4096
Generating RSA private key, 4096 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

**Example - OpenSSL을 사용하여 인증서 서명 요청(CSR) 생성**  
다음 명령을 사용하여 OpenSSL용 KeyTool을 사용해 방금 생성한 프라이빗 키에서 인증서 서명 요청(CSR)을 생성합니다. 화면의 지침을 읽고 프롬프트의 메시지를 따릅니다.  

```
$ openssl req -new -key <ssl-client.key> -out <ssl-client.csr>
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 []:
```

**Example - 루트 인증서를 사용하여 CSR 서명**  
다음 명령을 사용하여 [HSM에 트러스트 앵커 생성 및 등록](#setup-mtls-create-and-register-trust-anchor)에서 생성하고 등록한 루트 인증서로 CSR에 서명하고 `ssl-client.crt`라는 클라이언트 인증서를 생성합니다. 인증서는 5년(1826일) 동안 유효합니다.  

```
$ openssl x509 -req -days 1826 -in <ssl-client.csr> -CA <mtls_ca_root_1.crt> -CAkey <mtls_ca_root_1.key> -CAcreateserial -out <ssl-client.crt>
```

**Example - 클라이언트 인증서 체인 생성**  
다음 명령을 사용하여 [트러스트 앵커 생성 및 HSM에 등록](#setup-mtls-create-and-register-trust-anchor)에서 만들고 등록한 클라이언트 인증서와 루트 인증서를 결합하고 `ssl-client.pem`이라는 클라이언트 인증서 체인을 생성하며, 이는 다음 단계에서 구성하는 데 사용됩니다.  

```
$ cat <ssl-client.crt> <mtls_ca_root_1.crt> > <ssl-client.pem>
```
 중간 인증서를 생성에 [등록하고 트러스트 앵커를 트러스트 앵커로 HSM에 등록](#setup-mtls-create-and-register-trust-anchor)하는 경우 클라이언트 인증서를 전체 인증서 체인과 결합하여 클라이언트 인증서 체인을 생성해야 합니다.

### 클라이언트 SDK 5용 mTLS 구성
<a name="enable-ssl-5"></a>

클라이언트 SDK 5 구성 도구를 사용하여 올바른 클라이언트 키 경로와 클라이언트 인증서 체인 경로를 제공하여 상호 TLS를 활성화합니다. 클라이언트 SDK 5의 구성 도구에 대한 자세한 내용은 [AWS CloudHSM 클라이언트 SDK 5 구성 도구](configure-sdk-5.md) 섹션을 참조하세요.

------
#### [ PKCS \$111 library ]

**Linux용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증을 위한 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   $ sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다. 

   ```
   $ sudo /opt/cloudhsm/bin/configure-pkcs11 \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**Windows용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증에 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  PowerShell 인터프리터를 사용하는 경우 구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다.

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ OpenSSL Dynamic Engine ]

**Linux용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증을 위한 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다. 

   ```
   $ sudo /opt/cloudhsm/bin/configure-dyn \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

------
#### [ Key Storage Provider (KSP) ]

**Windows용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증에 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  PowerShell 인터프리터를 사용하는 경우 구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다.

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-ksp.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ JCE provider ]

**Linux용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증을 위한 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다. 

   ```
   $ sudo /opt/cloudhsm/bin/configure-jce \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**Windows용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증에 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  PowerShell 인터프리터를 사용하는 경우 구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다.

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-jce.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------
#### [ CloudHSM CLI ]

**Linux용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증을 위한 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   $ sudo cp ssl-client.pem </opt/cloudhsm/etc>
   sudo cp ssl-client.key </opt/cloudhsm/etc>
   ```

1.  구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다. 

   ```
   $ sudo /opt/cloudhsm/bin/configure-cli \
               --client-cert-hsm-tls-file </opt/cloudhsm/etc/ssl-client.pem> \
               --client-key-hsm-tls-file </opt/cloudhsm/etc/ssl-client.key>
   ```

**Windows용 클라이언트 SDK 5를 사용하여 TLS 클라이언트-HSM 상호 인증에 사용자 지정 인증서 및 키를 사용하려면**

1. 키와 인증서를 적절한 디렉터리로 복사합니다.

   ```
   cp ssl-client.pem <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem>
   cp ssl-client.key <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

1.  PowerShell 인터프리터를 사용하는 경우 구성 도구를 사용하여 `ssl-client.pem` 및 `ssl-client.key`을 지정합니다.

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-cli.exe" `
               --client-cert-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.pem> `
               --client-key-hsm-tls-file <C:\ProgramData\Amazon\CloudHSM\ssl-client.key>
   ```

------

## 3단계. 에 대한 mTLS 적용 설정 AWS CloudHSM
<a name="getting-start-setup-mtls-enforcement"></a>

클라이언트 SDK 5 구성 도구를 사용하여를 구성한 후 클라이언트와 간의 연결 AWS CloudHSM 은 클러스터의 상호 TLS가 됩니다. 하지만 구성 파일에서 프라이빗 키 경로와 클라이언트 인증서 체인 경로를 제거하면 연결이 다시 일반 TLS로 전환됩니다. CloudHSM CLI를 사용하여 다음 단계를 완료하여 클러스터에서 mtls 적용을 설정할 수 있습니다.

1. 다음 명령을 사용하여 CloudHSM CLI를 시작합니다.

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

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI를 사용하여 관리자로 로그인합니다.

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```
**참고**  
 1. CloudHSM CLI를 구성했는지 확인하고 mTLS 연결에서 CloudHSM CLI를 시작합니다.  
 2. mTLS 적용을 설정하기 전에 사용자 이름을 **admin**으로 사용하여 기본 관리자로 로그인해야 합니다.

1. ** [CloudHSM CLI를 사용하여 mTLS 적용 수준 설정](cloudhsm_cli-cluster-mtls-set-enforcement.md) ** 명령을 사용하여 적용을 설정합니다. 자세한 내용은 다음 예제를 참조하거나 **help cluster mtls set-enforcement** 명령을 사용하십시오.  
**Example - AWS CloudHSM 클러스터를 사용하여 mTLS 적용 설정**  

   다음 예제에서는 CloudHSM CLI에서 **cluster mtls set-enforcement** 명령을 사용하여 HSM으로 mTLS 적용을 설정하는 방법을 보여줍니다. 이 명령을 사용하려면 사용자 이름이 admin인 관리자가 HSM에 로그인되어 있어야 합니다.

   ```
   aws-cloudhsm > cluster mtls set-enforcement --level cluster
   {
     "error_code": 0,
     "data": {
       "message": "Mtls enforcement level set to Cluster successfully"
     }
   }
   ```
**주의**  
클러스터에서 mTLS 사용을 적용하면 기존에 존재하지 않는 모든 연결이 끊어지고 mTLS 인증서가 있는 클러스터에만 연결할 수 있습니다.