

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

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리
<a name="pkcs11-library"></a>

PKCS \$111 는 하드웨어 보안 모듈(HSM) 에서 암호화 작업을 수행하기 위한 표준입니다. AWS CloudHSM PKCS \$111 버전 2.40과 호환되는 PKCS \$111 라이브러리 구현을 제공합니다.

부트스트래핑에 대한 자세한 내용은 [클러스터에 연결](cluster-connect.md) 단원을 참조하십시오. 문제 해결은 [용 PKCS \$111 라이브러리에 대해 알려진 문제 AWS CloudHSMPKCS\$111 SDK의 알려진 문제](ki-pkcs11-sdk.md) 섹션을 참조하세요.

Client SDK 3 사용에 대한 자세한 내용은 [이전 SDK 버전을 사용하여 작업 AWS CloudHSM](choose-client-sdk.md) 단원을 참조하십시오. 

**Topics**
+ [PKCS \$111 라이브러리 설치](pkcs11-library-install.md)
+ [PKCS \$111 라이브러리에 인증](pkcs11-pin.md)
+ [키 유형](pkcs11-key-types.md)
+ [메커니즘](pkcs11-mechanisms.md)
+ [API 작업](pkcs11-apis.md)
+ [키 속성](pkcs11-attributes.md)
+ [코드 샘플](pkcs11-samples.md)
+ [고급 구성](pkcs11-library-configs.md)
+ [인증서 스토리지](pkcs11-certificate-storage.md)

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리 설치
<a name="pkcs11-library-install"></a>

이 주제에서는 최신 버전의 AWS CloudHSM 클라이언트 SDK 5 버전 시리즈용 PKCS \$111 라이브러리를 설치하기 위한 지침을 제공합니다. 클라이언트 SDK 또는 PKCS \$111 라이브러리에 대한 자세한 내용은 [클라이언트 SDK](use-hsm.md) 및 [PKCS \$111 라이브러리 사용](pkcs11-library.md)을 참조하십시오.

클라이언트 SDK 5를 사용하면 클라이언트 데몬을 설치하거나 실행할 필요가 없습니다.

클라이언트 SDK 5를 사용하여 단일 HSM 클러스터를 실행하려면 먼저 `disable_key_availability_check`을 `True`로 설정하여 클라이언트 키 내구성 설정을 관리해야 합니다. 자세한 내용은 [키 동기화](manage-key-sync.md) 및 [클라이언트 SDK 5 구성 도구](configure-sdk-5.md)를 참조하십시오.

클라이언트 SDK 5의 PKCS \$111 라이브러리에 대한 자세한 내용은 [PKCS \$111 라이브러리](pkcs11-library.md)를 참조하십시오.

**참고**  
클라이언트 SDK 5를 사용하여 단일 HSM 클러스터를 실행하려면 먼저 `disable_key_availability_check`을 `True`로 설정하여 클라이언트 키 내구성 설정을 관리해야 합니다. 자세한 내용은 [키 동기화](manage-key-sync.md) 및 [클라이언트 SDK 5 구성 도구](configure-sdk-5.md)를 참조하십시오.

**PKCS \$111 라이브러리를 설치하고 구성하려면**

1. 다음 명령을 사용하여 PKCS \$111 라이브러리를 다운로드하고 설치합니다.

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

   X86\$164 아키텍처 기반 Amazon Linux 2023용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-pkcs11-latest.amzn2023.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.amzn2023.x86_64.rpm
   ```

   ARM64 아키텍처 기반 Amazon Linux 2023용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-pkcs11-latest.amzn2023.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.amzn2023.aarch64.rpm
   ```

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

   Amazon Linux 2용 PKCS \$111 라이브러리를 X86\$164 아키텍처에 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-pkcs11-latest.el7.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el7.x86_64.rpm
   ```

   Amazon Linux 2용 PKCS \$111 라이브러리를 ARM64 아키텍처에 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-pkcs11-latest.el7.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el7.aarch64.rpm
   ```

------
#### [ RHEL 10 (10.0\$1) ]

   X86\$164 아키텍처에 RHEL 10용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-pkcs11-latest.el10.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el10.x86_64.rpm
   ```

   ARM64 아키텍처에서 RHEL 10용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL10/cloudhsm-pkcs11-latest.el10.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el10.aarch64.rpm
   ```

------
#### [ RHEL 9 (9.2\$1) ]

   X86\$164 아키텍처 기반 RHEL 9용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-pkcs11-latest.el9.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el9.x86_64.rpm
   ```

   ARM64 아키텍처 기반 RHEL 9용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL9/cloudhsm-pkcs11-latest.el9.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el9.aarch64.rpm
   ```

------
#### [ RHEL 8 (8.3\$1) ]

   X86\$164 아키텍처 기반 RHEL 8용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-pkcs11-latest.el8.x86_64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el8.x86_64.rpm
   ```

   ARM64 아키텍처에 RHEL 8용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-pkcs11-latest.el8.aarch64.rpm
   ```

   ```
   $ sudo yum install ./cloudhsm-pkcs11-latest.el8.aarch64.rpm
   ```

------
#### [ Ubuntu 24.04 LTS ]

   X86\$164 아키텍처 기반 Ubuntu 24.04 LTS용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-pkcs11_latest_u24.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u24.04_amd64.deb
   ```

   ARM64 아키텍처에서 Ubuntu 24.04 LTS용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Noble/cloudhsm-pkcs11_latest_u24.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u24.04_arm64.deb
   ```

------
#### [ Ubuntu 22.04 LTS ]

   Ubuntu 22.04 LTS용 PKCS \$111 라이브러리를 X86\$164 아키텍처에 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-pkcs11_latest_u22.04_amd64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u22.04_amd64.deb
   ```

   ARM64 아키텍처 기반 Ubuntu 22.04 LTS용 PKCS \$111 라이브러리를 설치합니다.

   ```
   $ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Jammy/cloudhsm-pkcs11_latest_u22.04_arm64.deb
   ```

   ```
   $ sudo apt install ./cloudhsm-pkcs11_latest_u22.04_arm64.deb
   ```

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

   X86\$164 아키텍처 기반 Windows Server용 PKCS \$111 라이브러리를 설치합니다.

   1. [클라이언트 SDK 5용 PKCS \$111 라이브러리](https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Windows/AWSCloudHSMPKCS11-latest.msi)를 다운로드합니다.

   1. Windows 관리자 권한으로 PKCS \$111 라이브러리 설치 프로그램(**AWSCloudHSMPKCS11-latest.msi**)을 실행합니다.

------

1. 구성 도구를 사용하여 발급 인증서의 위치를 지정합니다. 지침은 [인증서의 위치를 지정합니다.](cluster-connect.md#specify-cert-location) 섹션을 참조하십시오.

1. 클러스터에 연결하려면 [클라이언트 SDK 부트스트랩](cluster-connect.md#connect-how-to) 섹션을 참조하십시오.

1. 다음 위치에서 PKCS \$111 라이브러리 파일을 찾을 수 있습니다.
   + Linux 바이너리, 구성 스크립트 및 로그 파일:

     ```
     /opt/cloudhsm
     ```

     Windows 바이너리:

     ```
     C:\Program Files\Amazon\CloudHSM
     ```

     Windows 구성 스크립트 및 로그 파일:

     ```
     C:\ProgramData\Amazon\CloudHSM
     ```

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리에 인증
<a name="pkcs11-pin"></a>

PKCS \$111 라이브러리를 사용하면 애플리케이션이 AWS CloudHSM의 HSM에서 특정 [Crypto User(CU)](manage-hsm-users.md)로 실행됩니다. 애플리케이션은 CU가 소유하고 공유하는 키만 보고 관리할 수 있습니다. HSM에서 기존 CU를 사용하거나, 애플리케이션을 위한 CU를 새로 만들 수 있습니다. CU 관리에 대한 자세한 내용은 [CloudHSM CLI를 사용한 HSM 사용자 관리](manage-hsm-users-chsm-cli.md) 및 [CloudHSM 관리 유틸리티(CMU)를 사용한 HSM 사용자 관리](manage-hsm-users-cmu.md)를 참조하십시오.

CU를 PKCS \$111 라이브러리에 지정하려면 PKCS \$111 [C\$1Login 함수](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc385057915)의 핀 파라미터를 사용하십시오. AWS CloudHSM의 경우 핀 파라미터의 형식은 다음과 같습니다.

```
<CU_user_name>:<password>
```

예를 들어, 다음 명령은 PKCS \$111 라이브러리 핀을 사용자 이름 `CryptoUser` 및 `CUPassword123!` 암호를 사용하여 CU에 설정합니다.

```
CryptoUser:CUPassword123!
```

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리에 지원되는 키 유형
<a name="pkcs11-key-types"></a>

 AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리는 다음 키 유형을 지원합니다.


****  

| 키 유형 | 설명 | 
| --- | --- | 
| AES | 128, 192 및 256비트 AES 키를 생성합니다. | 
| 트리플 DES(3DES, DESede) | 192비트 트리플 DES 키를 생성합니다. 예정된 변경 사항은 [1](#key-types-1) 아래 참고를 참조하세요. | 
| EC | secp224r1(P-224), secp256r1(P-256), secp256k1(Blockchain), secp384r1(P-384) 및 secp521r1(P-521) 곡선을 사용하여 키를 생성합니다. | 
| GENERIC\$1SECRET | 1바이트\$1800바이트의 일반 암호를 생성합니다. | 
| RSA | 2048비트\$14096비트의 RSA 키를 생성합니다(256비트 증가). | 

[1] NIST 지침에 따라 2023년 이후 FIPS 모드의 클러스터에는 허용되지 않습니다. 비FIPS 모드의 클러스터의 경우 2023년 이후에도 허용됩니다. 세부 정보는 [FIPS 140 규정 준수: 2024 메커니즘 지원 중단](compliance-dep-notif.md#compliance-dep-notif-1) 섹션을 참조하세요.

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리에 지원되는 메커니즘
<a name="pkcs11-mechanisms"></a>

PKCS \$111 라이브러리는 PKCS \$111 사양 버전 2.40을 준수합니다. PKCS\$111을 사용하여 암호화 기능을 호출하려면 주어진 메커니즘을 가진 함수를 호출하십시오. 다음 섹션에서는 AWS CloudHSM 클라이언트 SDK 5에서 지원하는 함수와 메커니즘의 조합을 요약합니다.

PKCS \$111용 소프트웨어 라이브러리는 다음과 같은 알고리즘을 지원합니다.
+ **암호화 및 복호화** - AES-CBC, AES-CTR, AES-ECB, AES-GCM, DES3-CBC, DES3-ECB, RSA-OAEP 및 RSA-PKCS
+ **서명 및 확인** – RSA, HMAC 및 ECDSA(해싱 사용 및 사용 안 함)
+ **해시/다이제스트** – SHA1, SHA224, SHA256, SHA384 및 SHA512
+ **키 랩** – AES 키 랩,[1](#mech1) AES-GCM, RSA-AES 및 RSA-OAEP
+ **키 파생** - SP800-108 카운터 KDF 및 KDF가 포함된 ECDH(지원되는 KDF 알고리즘은 SHA1, SHA224, SHA256, SHA384, SHA512를 사용하는 X9.63)

**Topics**
+ [

## 키 및 키 페어 함수 생성
](#pkcs11-mech-function-genkey)
+ [

## 서명 및 인증 기능
](#pkcs11-mech-function-signverify)
+ [

## 서명, 복구 및 복구 기능 확인
](#pkcs11-mech-function-sr-vr)
+ [

## 다이제스트 기능
](#pkcs11-mech-function-digest)
+ [

## 암호화 및 해독 기능
](#pkcs11-mech-function-enc-dec)
+ [

## 키 함수 유도
](#pkcs11-mech-function-derive-key)
+ [

## 랩 및 언랩 해제 기능
](#pkcs11-mech-function-wrap-unwrap)
+ [

## 각 메커니즘의 최대 데이터 크기
](#pkcs11-mech-max)
+ [

## 메커니즘 주석
](#pkcs11-mech-annotations)

## 키 및 키 페어 함수 생성
<a name="pkcs11-mech-function-genkey"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 키 및 키 페어 생성 함수에 다음 메커니즘을 사용할 수 있습니다.
+ `CKM_RSA_PKCS_KEY_PAIR_GEN`
+ `CKM_RSA_X9_31_KEY_PAIR_GEN` - 이 메커니즘은 기능적으로 `CKM_RSA_PKCS_KEY_PAIR_GEN` 메커니즘과 동일하지만 `p` 및 `q` 생성에 대해 더 강력한 보장을 제공합니다.
+ `CKM_EC_KEY_PAIR_GEN`
+ `CKM_GENERIC_SECRET_KEY_GEN`
+ `CKM_AES_KEY_GEN`
+ `CKM_DES3_KEY_GEN`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 

## 서명 및 인증 기능
<a name="pkcs11-mech-function-signverify"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 서명 및 확인 함수에 다음 메커니즘을 사용할 수 있습니다. Client SDK 5를 사용하면 데이터가 소프트웨어에서 로컬로 해시됩니다. 즉, SDK로 해시할 수 있는 데이터 크기에는 제한이 없습니다.

Client SDK 5를 사용하면 RSA 및 ECDSA 해싱이 로컬에서 수행되므로 데이터 제한이 없습니다. HMAC에는 데이터 제한이 있습니다. 자세한 내용은 [2](#mech2) 각주를 참조하십시오.

**RSA**
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다.
+ `CKM_RSA_PKCS_PSS` – 단일 부분 작업에만 해당됩니다.
+ `CKM_SHA1_RSA_PKCS`
+ `CKM_SHA224_RSA_PKCS`
+ `CKM_SHA256_RSA_PKCS`
+ `CKM_SHA384_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA512_RSA_PKCS`
+ `CKM_SHA1_RSA_PKCS_PSS`
+ `CKM_SHA224_RSA_PKCS_PSS`
+ `CKM_SHA256_RSA_PKCS_PSS`
+ `CKM_SHA384_RSA_PKCS_PSS`
+ `CKM_SHA512_RSA_PKCS_PSS`

**ECDSA**
+ `CKM_ECDSA` – 단일 부분 작업에만 해당됩니다.
+ `CKM_ECDSA_SHA1`
+ `CKM_ECDSA_SHA224`
+ `CKM_ECDSA_SHA256`
+ `CKM_ECDSA_SHA384`
+ `CKM_ECDSA_SHA512`

**HMAC**
+ `CKM_SHA_1_HMAC`[2](#mech2)
+ `CKM_SHA224_HMAC`[2](#mech2)
+ `CKM_SHA256_HMAC`[2](#mech2)
+ `CKM_SHA384_HMAC`[2](#mech2)
+ `CKM_SHA512_HMAC`[2](#mech2)

**CMAC**
+ `CKM_AES_CMAC`

## 서명, 복구 및 복구 기능 확인
<a name="pkcs11-mech-function-sr-vr"></a>

Client SDK 5는 서명 복구 및 복구 확인 기능을 지원하지 않습니다.

## 다이제스트 기능
<a name="pkcs11-mech-function-digest"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 다이제스트 함수에 다음 메커니즘을 사용할 수 있습니다. Client SDK 5를 사용하면 데이터가 소프트웨어에서 로컬로 해시됩니다. 즉, SDK로 해시할 수 있는 데이터 크기에는 제한이 없습니다.
+ `CKM_SHA_1`
+ `CKM_SHA224`
+ `CKM_SHA256`
+ `CKM_SHA384`
+ `CKM_SHA512`

## 암호화 및 해독 기능
<a name="pkcs11-mech-function-enc-dec"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 암호화 및 해독 함수에 다음 메커니즘을 사용할 수 있습니다.
+ `CKM_RSA_X_509`
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다. [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 
+ `CKM_RSA_PKCS_OAEP` – 단일 부분 작업에만 해당됩니다.
+ `CKM_AES_ECB`
+ `CKM_AES_CTR`
+ `CKM_AES_CBC`
+ `CKM_AES_CBC_PAD`
+ `CKM_DES3_CBC`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+ `CKM_DES3_ECB`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+ `CKM_DES3_CBC_PAD`— [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다.
+  `CKM_AES_GCM` [1](#mech1), [2](#mech2)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)

## 키 함수 유도
<a name="pkcs11-mech-function-derive-key"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리는 다음과 같은 키 파생 메커니즘을 지원합니다.
+ `CKM_SP800_108_COUNTER_KDF`
+ `CKM_ECDH1_DERIVE` - 다음 공급업체 정의 KDF 유형[6](#kdf6)을 사용하여 ECDH 키 파생을 지원합니다.
  + `CKD_CLOUDHSM_X963_SHA1_KDF` - SHA1[7](#kdf7)을 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA224_KDF` - SHA224[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA256_KDF` - SHA256[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA384_KDF` - SHA384[7](#kdf7)를 사용하는 X9.63 KDF
  + `CKD_CLOUDHSM_X963_SHA512_KDF` - SHA512[7](#kdf7)를 사용하는 X9.63 KDF

## 랩 및 언랩 해제 기능
<a name="pkcs11-mech-function-wrap-unwrap"></a>

PKCS \$111 라이브러리용 AWS CloudHSM 소프트웨어 라이브러리를 사용하면 래핑 및 언래핑 함수에 다음 메커니즘을 사용할 수 있습니다.

[AES 키 래핑](manage-aes-key-wrapping.md)에 대한 추가 정보는 AES 키 래핑을 참조하십시오.
+ `CKM_RSA_PKCS` – 단일 부분 작업에만 해당됩니다. [5](#mech5) 각주에 예정된 변경 사항이 나열되어 있습니다. 
+ `CKM_RSA_PKCS_OAEP`[4](#mech4)
+ `CKM_AES_GCM`[1](#mech1), [3](#mech3)
+ `CKM_CLOUDHSM_AES_GCM`[3](#mech3)
+ `CKM_RSA_AES_KEY_WRAP`
+ `CKM_CLOUDHSM_AES_KEY_WRAP_NO_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`[3](#mech3)
+ `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`[3](#mech3)

## 각 메커니즘의 최대 데이터 크기
<a name="pkcs11-mech-max"></a>

다음 표에는 각 메커니즘에 설정된 최대 데이터 크기가 나와 있습니다.


**최대 데이터 세트 크기**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-mechanisms.html)

## 메커니즘 주석
<a name="pkcs11-mech-annotations"></a>
+ [1] AES-GCM 암호화를 수행할 때 HSM은 애플리케이션의 IV(초기화 벡터) 데이터를 허용하지 않습니다. 생성되는 IV를 사용해야 합니다. HSM이 제공하는 12바이트 IV는 사용자가 제공하는 `CK_GCM_PARAMS` 파라미터 구조의 pIV 요소가 가리키는 메모리 참조에 기록됩니다. 사용자의 혼동을 피하기 위해 버전 1.1.1 이상인 PKCS\$111 SDK는 AES-GCM 암호화가 초기화될 때 pIV가 초기화된 버퍼를 가리키는지 확인합니다.
+ [2] 다음 메커니즘 중 하나를 사용하여 데이터에 대해 작업을 수행할 때 데이터 버퍼가 최대 데이터 크기를 초과하면 작업 결과 오류가 발생합니다. 이러한 메커니즘의 경우 모든 데이터 처리는 HSM 내에서 이루어져야 합니다. 각 메커니즘의 최대 데이터 크기 세트에 대한 자세한 내용은 [각 메커니즘의 최대 데이터 크기](#pkcs11-mech-max) 단원을 참조하십시오.
+ [3] 공급업체가 정의한 메커니즘. CloudHSM 공급자 정의 메커니즘을 사용하려면 컴파일하는 동안 PKCS \$111 애플리케이션에 `/opt/cloudhsm/include/pkcs11/pkcs11t.h`가 포함되어 있어야 합니다.

  `CKM_CLOUDHSM_AES_GCM`: 이 독점 메커니즘은 `CKM_AES_GCM` 표준에 대한 프로그래밍 방식으로 안전한 대안입니다. 이 메커니즘은 암호 초기화 중에 제공되는 `CK_GCM_PARAMS` 구조로 다시 암호 텍스트를 쓰는 대신 암호 텍스트 앞에 HSM에 의해 생성된 IV를 추가합니다. 이 메커니즘은 `C_Encrypt`, `C_WrapKey`, `C_Decrypt` 및 `C_UnwrapKey` 함수와 함께 사용할 수 있습니다. 이 메커니즘을 사용할 때는 `CK_GCM_PARAMS` 구문의 piV 변수를 `NULL`로 설정해야 합니다. `C_Decrypt` 및 `C_UnwrapKey`와 함께 이 메커니즘을 사용할 경우, IV는 언래핑되는 암호화 텍스트 앞에 추가될 것으로 예상됩니다.

  `CKM_CLOUDHSM_AES_KEY_WRAP_PKCS5_PAD`: PKCS \$15 패딩을 사용하는 AES 키 래핑

  `CKM_CLOUDHSM_AES_KEY_WRAP_ZERO_PAD`: 제로 패딩을 사용하는 AES 키 래핑
+ [4] 다음 `CK_MECHANISM_TYPE` 및 `CK_RSA_PKCS_MGF_TYPE`은 `CKM_RSA_PKCS_OAEP`에 대해 `CK_RSA_PKCS_OAEP_PARAMS`로 지원됩니다.
  + `CKG_MGF1_SHA1`을 사용하는 `CKM_SHA_1`
  + `CKG_MGF1_SHA224`를 사용하는 `CKM_SHA224`
  + `CKG_MGF1_SHA256`를 사용하는 `CKM_SHA256`
  + `CKM_MGF1_SHA384`를 사용하는 `CKM_SHA384`
  + `CKM_MGF1_SHA512`를 사용하는 `CKM_SHA512`
+ [5] NIST 지침에 따라 2023년 이후 FIPS 모드의 클러스터에는 허용되지 않습니다. 비FIPS 모드의 클러스터의 경우 2023년 이후에도 허용됩니다. 세부 정보는 [FIPS 140 규정 준수: 2024 메커니즘 지원 중단](compliance-dep-notif.md#compliance-dep-notif-1) 섹션을 참조하세요.
+ [6] 공급자가 정의한 유형입니다. CloudHSM 공급자 정의 유형을 사용하려면 컴파일하는 동안 PKCS \$111 애플리케이션에 `cloudhsm_pkcs11_vendor_defs.h`가 포함되어 있어야 합니다. 이는 Linux 기반 플랫폼의 경우 `/opt/cloudhsm/include/pkcs11/cloudhsm_pkcs11_vendor_defs.h`, Windows 기반 플랫폼의 경우 `C:\Program Files\Amazon\CloudHSM\include\pkcs11\cloudhsm_pkcs11_vendor_defs.h`에서 찾을 수 있습니다.
+ [7] 키 파생 함수(KDFs)는 [NIST Special Publication 800-56A 개정 3](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Ar3.pdf)에 지정되어 있습니다.

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리에 지원되는 API 작업
<a name="pkcs11-apis"></a>

PKCS \$111 라이브러리는 AWS CloudHSM 클라이언트 SDK 5에 대해 다음과 같은 PKCS \$111 API 작업을 지원합니다.
+ `C_CloseAllSessions`
+ `C_CloseSession`
+ `C_CreateObject`
+ `C_Decrypt`
+ `C_DecryptFinal`
+ `C_DecryptInit`
+ `C_DecryptUpdate`
+ `C_DeriveKey`
+ `C_DestroyObject`
+ `C_Digest`
+ `C_DigestFinal`
+ `C_DigestInit`
+ `C_DigestUpdate`
+ `C_Encrypt`
+ `C_EncryptFinal`
+ `C_EncryptInit`
+ `C_EncryptUpdate`
+ `C_Finalize`
+ `C_FindObjects`
+ `C_FindObjectsFinal`
+ `C_FindObjectsInit`
+ `C_GenerateKey`
+ `C_GenerateKeyPair`
+ `C_GenerateRandom`
+ `C_GetAttributeValue`
+ `C_GetFunctionList`
+ `C_GetInfo`
+ `C_GetMechanismInfo`
+ `C_GetMechanismList`
+ `C_GetSessionInfo`
+ `C_GetSlotInfo`
+ `C_GetSlotList`
+ `C_GetTokenInfo`
+ `C_Initialize`
+ `C_Login`
+ `C_Logout`
+ `C_OpenSession`
+ `C_Sign`
+ `C_SignFinal`
+ `C_SignInit`
+ `C_SignUpdate`
+ `C_UnWrapKey`
+ `C_Verify`
+ `C_VerifyFinal`
+ `C_VerifyInit`
+ `C_VerifyUpdate`
+ `C_WrapKey`

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리의 키 속성
<a name="pkcs11-attributes"></a>

 AWS CloudHSM 키 객체는 퍼블릭, 프라이빗 또는 보안 키일 수 있습니다. 키 객체에 대해 허용되는 작업은 속성을 통해 지정됩니다. 속성은 키 객체가 생성될 때 정의됩니다. 에 PKCS \$111 라이브러리를 사용하는 경우 PKCS \$111 표준에 지정된 대로 기본값을 AWS CloudHSM할당합니다.

AWS CloudHSM 는 PKCS \$111 사양에 나열된 모든 속성을 지원하지 않습니다. 우리는 우리가 지원하는 모든 속성에 대한 사양을 준수합니다. 이러한 속성은 각 표에 나열되어 있습니다.

객체를 생성, 수정 또는 복사하는 `C_CreateObject`, `C_GenerateKey`, `C_GenerateKeyPair`, `C_UnwrapKey`, `C_DeriveKey` 등의 암호화 함수는 속성 템플릿을 파라미터 중 하나로 사용합니다. 객체 생성 중 속성 템플릿 전달에 대한 자세한 내용은 [PKCS \$111을 통해 키 생성 라이브러리](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)의 예를 참조하십시오.

다음 주제에서는 AWS CloudHSM 키 속성에 대한 자세한 정보를 제공합니다.

**Topics**
+ [속성 테이블](pkcs11-attributes-interpreting.md)
+ [속성 수정](modify-attr.md)
+ [오류 코드 해석](attr-errors.md)

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리 속성 테이블
<a name="pkcs11-attributes-interpreting"></a>

의 PKCS \$111 라이브러리 테이블에는 키 유형에 따라 다른 속성 목록이 AWS CloudHSM 포함되어 있습니다. 특정 암호화 함수를와 함께 사용할 때 특정 키 유형에 대해 지정된 속성이 지원되는지 여부를 나타냅니다 AWS CloudHSM.

**범례:**
+ ✔는 CloudHSM이 특정 키 유형에 대해 해당 속성을 지원함을 나타냅니다.
+ ✖는 CloudHSM이 특정 키 유형에 대해 해당 속성을 지원하지 않음을 나타냅니다.
+ R은 속성 값이 특정 키 유형에 대해 읽기 전용으로 설정됨을 나타냅니다.
+ S는 중요하므로 `GetAttributeValue`로 속성을 읽을 수 없음을 나타냅니다.
+ 기본값 열의 빈 셀은 속성에 할당된 특정 기본값이 없음을 나타냅니다.

## GenerateKeyPair
<a name="generatekeypair"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## GenerateKey
<a name="generatekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## CreateObject
<a name="createobject"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## UnwrapKey
<a name="unwrapkey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## DeriveKey
<a name="derivekey"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

## GetAttributeValue
<a name="getattributevalue"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/pkcs11-attributes-interpreting.html)

**속성 주석**
+ [1] 이 속성은 펌웨어에서 부분적으로 지원되며 명시적으로 기본값으로만 설정되어야 합니다.
+ [2] 필수 속성.

# AWS CloudHSM 클라이언트 SDK 5에 대한 PKCS \$111 라이브러리 속성 수정
<a name="modify-attr"></a>

 AWS CloudHSM 객체의에 대한 일부 PKCS \$111 라이브러리 속성은 객체가 생성된 후 수정할 수 있지만 일부는 수정할 수 없습니다. 속성을 수정하려면 CloudHSM CLI에서 [키 set-attribute](cloudhsm_cli-key-set-attribute.md) 명령을 사용합니다. CloudHSM CLI의 [키 목록](cloudhsm_cli-key-list.md) 명령을 사용하여 속성 목록을 추출할 수도 있습니다.

다음 목록은 객체 생성 후 수정할 수 있는 속성을 보여 줍니다.
+ `CKA_LABEL`
+ `CKA_TOKEN`
**참고**  
세션 키를 토큰 키로 변경하는 경우에만 수정이 허용됩니다. 속성 값을 변경하려면 CloudHSM CLI에서 [키 set-attribute](cloudhsm_cli-key-set-attribute.md) 명령을 사용합니다.
+ `CKA_ENCRYPT`
+ `CKA_DECRYPT`
+ `CKA_SIGN`
+ `CKA_VERIFY`
+ `CKA_WRAP`
+ `CKA_UNWRAP`
+ `CKA_LABEL`
+ `CKA_SENSITIVE`
+ `CKA_DERIVE`
**참고**  
이 속성은 키 파생을 지원합니다. 모든 퍼블릭 키에 대해 `False`여야 하고 `True`로 설정할 수 없습니다. 보안 및 EC 프라이빗 키의 경우 `True` 또는 `False`로 설정할 수 있습니다.
+ `CKA_TRUSTED`
**참고**  
CO(Crypto Officer)만 이 속성을 `True` 또는 `False`로 설정할 수 있습니다.
+ `CKA_WRAP_WITH_TRUSTED`
**참고**  
이 속성을 내보낼 수 있는 데이터 키에 적용하여 이 키를 `CKA_TRUSTED`로 표시된 키로만 래핑할 수 있도록 지정합니다. `CKA_WRAP_WITH_TRUSTED`는 true로 설정하면 속성이 읽기 전용이 되며 속성을 변경하거나 제거할 수 없습니다.

# AWS CloudHSM 클라이언트 SDK 5에 대한 PKCS \$111 라이브러리 오류 코드 해석
<a name="attr-errors"></a>

템플릿에서 특정 키로 지원되지 않는 PKCS \$111 라이브러리 속성을 지정하면 오류가 발생합니다. 다음 표에 사양을 위반하면 발생되는 오류 코드가 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cloudhsm/latest/userguide/attr-errors.html)

# AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리의 코드 샘플
<a name="pkcs11-samples"></a>

GitHub의 코드 샘플은 AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리를 사용하여 기본 작업을 수행하는 방법을 보여줍니다.

## 사전 조건
<a name="pkcs11-samples-prereqs"></a>

샘플을 실행하기 전에 다음 단계를 수행하여 환경을 설정하십시오.
+ 클라이언트 SDK 5용 [PKCS \$111 라이브러리](pkcs11-library-install.md)를 설치하고 구성합니다.
+ [CU(Cryptographic User)](manage-hsm-users.md) 설정 애플리케이션은 이 HSM 계정을 사용하여 HSM에서 코드 샘플을 실행합니다.

## 코드 샘플
<a name="pkcs11-samples-code"></a>

PKCS\$111용 AWS CloudHSM 소프트웨어 라이브러리의 코드 샘플은 [GitHub](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples)에서 사용할 수 있습니다. 이 리포지토리에는 암호화, 암호 해독, 서명 및 확인 등 PKCS \$111을 사용하여 일반적인 작업을 수행하는 방법에 대한 예제가 포함되어 있습니다.
+ [키 생성(AES, RSA, EC)](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate)
+ [키 속성 나열](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/attributes/)
+ [AES GCM을 사용하여 데이터 암호화 및 암호화 해제](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/encrypt/aes_gcm.c)
+ [AES\$1CTR을 사용하여 데이터 암호화 및 복호화](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/aes_ctr.c) 
+ [3DES를 사용하여 데이터 암호화 및 복호화](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/encrypt/des_ecb.c) 
+ [RSA를 사용하여 데이터 서명 및 확인](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/sign/rsa_sign.c)
+ [HMAC KDF를 사용하여 키 추출](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/derivation/hmac_kdf.c)
+ [PKCS \$15 패딩을 사용하는 AES로 키 래핑 및 언래핑](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_wrapping.c)
+ [패딩을 사용하지 않는 AES로 키 래핑 및 언래핑](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_no_padding_wrapping.c)
+ [제로 패딩을 사용하는 AES로 키 래핑 및 언래핑](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/aes_zero_padding_wrapping.c)
+ [AES-GCM을 사용하여 키 래핑 및 언래핑](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/wrapping/aes_gcm_wrapping.c)
+ [RSA를 사용하여 키 래핑 및 언래핑](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/rsa_wrapping.c)

# 용 PKCS \$111 라이브러리의 고급 구성 AWS CloudHSM
<a name="pkcs11-library-configs"></a>

 AWS CloudHSM PKCS \$111 공급자에는 대부분의 고객이 활용하는 일반 구성의 일부가 아닌 다음과 같은 고급 구성이 포함되어 있습니다. 이러한 구성은 추가 기능을 제공합니다.
+ [PKCS \$111을 사용하여 여러 슬롯에 연결](pkcs11-library-configs-multi-slot.md)
+ [PKCS \$111 구성 다시 시도](pkcs11-library-configs-retry.md)

# 용 PKCS \$111 라이브러리를 사용한 다중 슬롯 구성 AWS CloudHSM
<a name="pkcs11-library-configs-multi-slot"></a>

클라이언트 SDK 5 PKCS \$111 라이브러리의 단일 슬롯은 AWS CloudHSM의 클러스터에 대한 단일 연결을 나타냅니다. 클라이언트 SDK 5를 사용하면 여러 슬롯이 단일 PKCS\$111 애플리케이션에서 여러 CloudHSM 클러스터에 사용자를 연결할 수 있도록 PKCS11 라이브러리를 구성할 수 있습니다.

이 주제의 지침에 따라 애플리케이션이 다중 슬롯 기능을 사용하여 여러 클러스터에 연결되도록 할 수 있습니다.

**Topics**
+ [

## 용 PKCS \$111 라이브러리의 다중 슬롯 사전 조건 AWS CloudHSM
](#pkcs11-multi-slot-prereqs)
+ [

# 에 대한 다중 슬롯 기능을 위한 PKCS \$111 라이브러리 구성 AWS CloudHSM
](pkcs11-multi-slot-config-run.md)
+ [

# 에 대한 다중 슬롯 기능이 있는 클러스터 추가 AWS CloudHSM
](pkcs11-multi-slot-add-cluster.md)
+ [

# 에 대한 다중 슬롯 기능이 있는 클러스터 제거 AWS CloudHSM
](pkcs11-multi-slot-remove-cluster.md)

## 용 PKCS \$111 라이브러리의 다중 슬롯 사전 조건 AWS CloudHSM
<a name="pkcs11-multi-slot-prereqs"></a>

용 PKCS \$111 라이브러리의 여러 슬롯에 대해를 구성하기 전에 다음 사전 조건을 AWS CloudHSM완료합니다.
+ 연결하려는 두 개 이상의 AWS CloudHSM 클러스터와 클러스터 인증서.
+ 위의 모든 클러스터에 연결하도록 보안 그룹이 올바르게 구성된 EC2 인스턴스. 클러스터 및 클라이언트 인스턴스를 설정하는 방법에 대한 자세한 내용은 [시작하기 AWS CloudHSM](getting-started.md)를 참조하세요.
+ 다중 슬롯 기능을 설정하려면 PKCS \$111 라이브러리를 이미 다운로드하여 설치했어야 합니다. 아직 수행하지 않은 경우 [AWS CloudHSM 클라이언트 SDK 5용 PKCS \$111 라이브러리 설치](pkcs11-library-install.md)의 지침을 참조하십시오.

# 에 대한 다중 슬롯 기능을 위한 PKCS \$111 라이브러리 구성 AWS CloudHSM
<a name="pkcs11-multi-slot-config-run"></a>

에 대한 다중 슬롯 기능을 위해 PKCS \$111 라이브러리를 구성하려면 다음 단계를 AWS CloudHSM따르세요.

1. 다중 슬롯 기능을 사용하여 연결하려는 클러스터를 식별합니다.

1. [에 대한 다중 슬롯 기능이 있는 클러스터 추가 AWS CloudHSM](pkcs11-multi-slot-add-cluster.md)의 지침에 따라 이러한 클러스터를 PKCS \$111 구성에 추가합니다.

1. 다음 번에 PKCS \$111 애플리케이션을 실행하면 다중 슬롯 기능을 사용할 수 있게 됩니다.

# 에 대한 다중 슬롯 기능이 있는 클러스터 추가 AWS CloudHSM
<a name="pkcs11-multi-slot-add-cluster"></a>

[용 PKCS \$111을 사용하여 여러 슬롯에 연결할](pkcs11-library-configs-multi-slot.md) 때 **configure-pkcs11 add-cluster** 명령을 AWS CloudHSM사용하여 구성에 클러스터를 추가합니다.

## 구문
<a name="pkcs11-multi-slot-add-cluster-syntax"></a>

```
configure-pkcs11 add-cluster [OPTIONS]
        --cluster-id <CLUSTER ID> 
        [--region <REGION>]
        [--endpoint <ENDPOINT>]
        [--hsm-ca-cert <HSM CA CERTIFICATE FILE>]
        [--client-cert-hsm-tls-file <CLIENT CERTIFICATE FILE>]
        [--client-key-hsm-tls-file <CLIENT KEY FILE>]
        [-h, --help]
```

## 예제
<a name="pkcs11-multi-slot-add-cluster-examples"></a>

### `cluster-id` 파라미터를 사용하여 클러스터를 추가합니다.
<a name="w2aac25c21c17c31b7c13b7b3b1"></a>

**Example**  
 `cluster-id` 파라미터와 함께 **configure-pkcs11 add-cluster**을 사용하여 구성에 클러스터(ID `cluster-1234567`)를 추가합니다.  

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 add-cluster --cluster-id <cluster-1234567>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" add-cluster --cluster-id <cluster-1234567>
```

**작은 정보**  
`cluster-id` 파라미터와 함께 **configure-pkcs11 add-cluster**을 사용해도 클러스터가 추가되지 않는 경우, 추가되는 클러스터를 식별하기 위해 `--region` 및 `--endpoint` 파라미터도 필요한 이 명령의 더 긴 버전에 대한 다음 예를 참조하십시오. 예를 들어 클러스터의 리전이 AWS CLI 기본값으로 구성된 리전과 다른 경우 `--region` 파라미터를 사용하여 올바른 리전을 사용해야 합니다. 또한 호출에 사용할 AWS CloudHSM API 엔드포인트를 지정할 수 있습니다. 이는 기본 DNS 호스트 이름을 사용하지 않는 VPC 인터페이스 엔드포인트를 사용하는 등 다양한 네트워크 설정에 필요할 수 있습니다 AWS CloudHSM.

### `cluster-id`, `endpoint`, `region` 파라미터를 사용하여 클러스터를 추가합니다.
<a name="w2aac25c21c17c31b7c13b7b3b3"></a>

**Example**  
 `cluster-id`, `endpoint`, `region` 파라미터와 함께 **configure-pkcs11 add-cluster**을 사용하여 구성에 클러스터(ID `cluster-1234567`)를 추가합니다.  

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 add-cluster --cluster-id <cluster-1234567> --region <us-east-1> --endpoint <https://cloudhsmv2.us-east-1.amazonaws.com>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" add-cluster --cluster-id <cluster-1234567>--region <us-east-1> --endpoint <https://cloudhsmv2.us-east-1.amazonaws.com>
```

`--cluster-id`, `--region`, `--endpoint` 파라미터에 대한 자세한 내용은 [AWS CloudHSM 클라이언트 SDK 5 구성 파라미터](configure-tool-params5.md) 섹션을 참조하십시오.

## 파라미터
<a name="pkcs11-multi-slot-add-cluster-parameters"></a>

**--cluster-id *<Cluster ID>***  
 클러스터 ID와 연결된 클러스터의 모든 HSM Elastic Network 인터페이스(ENI) IP 주소를 찾기 위해 `DescribeClusters`를 호출합니다. 구성 AWS CloudHSM 파일에 ENI IP 주소가 추가됩니다.  
퍼블릭 인터넷에 액세스할 수 없는 VPC 내의 EC2 인스턴스에서 `--cluster-id` 파라미터를 사용하는 경우 연결할 인터페이스 VPC 엔드포인트를 생성해야 합니다 AWS CloudHSM. VPC 엔드포인트에 대한 자세한 내용은 [AWS CloudHSM 및 VPC 엔드포인트](cloudhsm-vpc-endpoint.md) 섹션을 참조하십시오.
필수 항목 여부: 예

**--endpoint *<Endpoint>***  
`DescribeClusters` 호출에 사용되는 AWS CloudHSM API 엔드포인트를 지정합니다. 이 옵션은 `--cluster-id`와 조합하여 설정해야 합니다.  
필수 여부: 아니요

**--hsm-ca-cert *<HsmCA Certificate Filepath>***  
HSM CA 인증서에 대한 파일 경로를 지정합니다.  
필수 여부: 아니요

**--region *<Region>***  
클러스터의 지역을 지정합니다. 이 옵션은 `--cluster-id`와 조합하여 설정해야 합니다.  
`--region` 파라미터를 제공하지 않으면 시스템은 `AWS_DEFAULT_REGION` 또는 `AWS_REGION` 환경 변수를 읽으려고 시도하여 리전을 선택합니다. 이러한 변수가 설정되지 않은 경우, 시스템은 사용자가 `AWS_CONFIG_FILE` 환경 변수에 다른 파일을 지정하지 않는 한 AWS config 파일(일반적으로 `~/.aws/config`)의 프로필과 연결된 리전을 확인합니다. 위 항목 중 아무 것도 설정되지 않은 경우 시스템은 `us-east-1` 리전을 기본값으로 사용합니다.  
필수 여부: 아니요

**--client-cert-hsm-tls-file *<client certificate hsm tls path>***  
 TLS client-HSM 상호 인증에 사용되는 클라이언트 인증서의 경로입니다.  
 CloudHSM CLI를 사용하여 HSM에 하나 이상의 트러스트 앵커를 등록한 경우에만 이 옵션을 사용합니다. 이 옵션은 `--client-key-hsm-tls-file`와 조합하여 설정해야 합니다.  
필수 여부: 아니요

**--client-key-hsm-tls-file *<client key hsm tls path>***  
 TLS client-HSM 상호 인증에 사용되는 클라이언트 키의 경로입니다.  
 CloudHSM CLI를 사용하여 HSM에 하나 이상의 트러스트 앵커를 등록한 경우에만 이 옵션을 사용합니다. 이 옵션은 `--client-cert-hsm-tls-file`와 조합하여 설정해야 합니다.  
필수 여부: 아니요

# 에 대한 다중 슬롯 기능이 있는 클러스터 제거 AWS CloudHSM
<a name="pkcs11-multi-slot-remove-cluster"></a>

[PKCS\$111을 사용하여 여러 슬롯에 연결](pkcs11-library-configs-multi-slot.md)할 때 **configure-pkcs11 remove-cluster** 명령을 사용하여 사용 가능한 PKCS \$111 슬롯에서 클러스터를 제거합니다.

## 구문
<a name="pkcs11-multi-slot-remove-cluster-syntax"></a>

```
configure-pkcs11 remove-cluster [OPTIONS]
        --cluster-id <CLUSTER ID>
        [-h, --help]
```

## 예제
<a name="pkcs11-multi-slot-remove-cluster-examples"></a>

### `cluster-id` 파라미터를 사용하여 클러스터를 삭제합니다.
<a name="w2aac25c21c17c31b7c15b7b3b1"></a>

**Example**  
 `cluster-id` 파라미터와 함께 **configure-pkcs11 remove-cluster**을 사용하여 구성에서 클러스터(ID `cluster-1234567`)를 삭제합니다.  

```
$ sudo /opt/cloudhsm/bin/configure-pkcs11 remove-cluster --cluster-id <cluster-1234567>
```

```
PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" remove-cluster --cluster-id <cluster-1234567>
```

`--cluster-id` 파라미터에 대한 자세한 내용은 [AWS CloudHSM 클라이언트 SDK 5 구성 파라미터](configure-tool-params5.md)를 참조하세요.

## 파라미터
<a name="pkcs11-multi-slot-remove-cluster-parameters"></a>

**--cluster-id *<Cluster ID>***  
 구성에서 제거할 클러스터의 ID  
필수 항목 여부: 예

# 용 PKCS \$111 라이브러리에 대한 재시도 명령 AWS CloudHSM
<a name="pkcs11-library-configs-retry"></a>

AWS CloudHSM 클라이언트 SDK 5.8.0 이상에는 클라이언트 측에서 HSM 제한 작업을 재시도하는 자동 재시도 전략이 내장되어 있습니다. HSM이 이전 작업을 수행하느라 너무 바빠서 더 많은 요청을 받을 수 없어 작업을 제한하는 경우 Client SDK는 제한이 발생한 작업을 최대 3회까지 재시도하고 기하급수적으로 백오프합니다. 이 자동 재시도 전략은 **끄기 모드**와 **표준 모드** 중 하나로 설정할 수 있습니다.
+ **끄기 모드**: Client SDK는 HSM에서 병목 현상이 발생한 작업에 대해 재시도 전략을 수행하지 않습니다.
+ **표준 모드**: Client SDK 5.8.0 이상의 기본 모드입니다. 이 모드에서는 Client SDK가 기하급수적으로 백오프를 수행하여 병목 현상이 발생한 작업을 자동으로 재시도합니다.

자세한 내용은 [HSM 스로틀링](troubleshoot-hsm-throttling.md) 단원을 참조하십시오.

## 재시도 명령을 끄기 모드로 설정합니다.
<a name="w2aac25c21c17c31b9b9"></a>

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

**Linux용 Client SDK 5의 재시도 명령을 **off**로 설정하려면**
+ 다음 명령을 사용하여 재시도 구성을 **off** 모드로 설정할 수 있습니다.

  ```
  $ sudo /opt/cloudhsm/bin/configure-pkcs11 --default-retry-mode off
  ```

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

**Client SDK 5 on Windows에 대한 재시도 명령을 **off**로 설정하려면**
+ 다음 명령을 사용하여 재시도 구성을 **off** 모드로 설정할 수 있습니다.

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --default-retry-mode off
  ```

------

# PKCS \$111 라이브러리를 사용한 인증서 스토리지
<a name="pkcs11-certificate-storage"></a>

 AWS CloudHSM PKCS \$111 라이브러리는 퍼블릭 키 인증서를 hsm2m.medium 클러스터에 "퍼블릭 객체"(PKCS \$111 2.40에 정의됨)로 저장하는 것을 지원합니다. 이 기능을 사용하면 퍼블릭 및 프라이빗 PKCS \$111 세션 모두에서 퍼블릭 키 인증서를 생성, 검색, 수정, 삭제할 수 있습니다.

 PKCS \$111 라이브러리와 함께 인증서 스토리지를 사용하려면 클라이언트 구성에서 이를 활성화해야 합니다. 활성화되면 PKCS \$111 애플리케이션에서 인증서 객체를 관리할 수 있습니다. [C\$1FindObjects](http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html#_Toc323205461)와 같은 인증서 및 키 객체 모두에 적용되는 작업은 키 및 인증서 스토리지 모두에서 결과를 반환합니다.

**Topics**
+ [인증서 스토리지 활성화](pkcs11-certificate-storage-configuration.md)
+ [인증서 스토리지 API](pkcs11-certificate-storage-api.md)
+ [인증서 속성](pkcs11-certificate-storage-attributes.md)
+ [인증서 스토리지 감사 로그](pkcs11-certificate-storage-audit-logs.md)

# 인증서 스토리지 활성화
<a name="pkcs11-certificate-storage-configuration"></a>

 PKCS \$111 라이브러리 구성 도구를 사용하여 hsm2m.medium 클러스터에서 인증서 스토리지를 활성화할 수 있습니다. 이 기능은 SDK 버전 5.13 이상 버전에서 사용할 수 있습니다. 인증서 객체 유형을 지원하는 작업 목록은 [인증서 스토리지 API 작업](pkcs11-certificate-storage-api.md) 섹션을 참조하세요.

 인증서 스토리지를 활성화하려면 운영 체제에 대해 다음 단계를 수행합니다.

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

****인증서 스토리지 활성화****  
다음 명령을 실행합니다.

  ```
  $ sudo /opt/cloudhsm/bin/configure-pkcs11 --enable-certificate-storage
  ```

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

****인증서 스토리지 활성화****  
명령 프롬프트를 열고 다음 명령을 실행합니다.

  ```
  PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\configure-pkcs11.exe" --enable-certificate-storage
  ```

------

# 인증서 스토리지 API 작업
<a name="pkcs11-certificate-storage-api"></a>

 다음 PKCS \$111 작업은 인증서 객체 유형(`CKO_CERTIFICATE`)을 지원합니다.

## 일반 인증서 작업
<a name="general-certificate-operations"></a>

**`C_CreateObject`**  
새 인증서 객체를 생성합니다.

**`C_DestroyObject`**  
기존 인증서 객체를 삭제합니다.

**`C_GetAttributeValue`**  
인증서 객체 중 하나 이상의 속성 값을 가져옵니다.

**`C_SetAttributeValue`**  
인증서 객체 중 하나 이상의 속성 값을 업데이트합니다.

## 인증서 객체 검색 작업
<a name="certificate-object-search-operations"></a>

**`C_FindObjectsInit`**  
인증서 객체 검색을 시작합니다.

**`C_FindObjects`**  
인증서 객체 검색을 계속합니다.

**`C_FindObjectsFinal`**  
인증서 객체 검색을 종료합니다.

# 인증서 스토리지 속성
<a name="pkcs11-certificate-storage-attributes"></a>

 다음 표에는 지원되는 인증서 객체 속성과 해당 값이 나열되어 있습니다.


| 속성 | 기본값  | 설명 | 
| --- | --- | --- | 
| `CKA_CLASS` | 필수 | `CKO_CERTIFICATE`여야 합니다. | 
| `CKA_TOKEN` | True |  `True`여야 합니다. | 
| `CKA_MODIFIABLE` | True | `True`여야 합니다. | 
| `CKA_PRIVATE` | False | `False`여야 합니다. | 
| `CKA_LABEL` | 비어 있음 | 127자로 제한됩니다. | 
| `CKA_COPYABLE` | False | `False`여야 합니다. | 
| `CKA_DESTROYABLE` | True | `True`여야 합니다. | 
| `CKA_CERTIFICATE_TYPE` | 필수 | `CKC_X_509`여야 합니다. | 
| `CKA_TRUSTED` | False | `False`여야 합니다. | 
| `CKA_CERTIFICATE_CATEGORY` | `CK_CERTIFICATE_CATEGORY_UNSPECIFIED` | `CK_CERTIFICATE_CATEGORY_UNSPECIFIED`여야 합니다. | 
| `CKA_CHECK_VALUE` | `CKA_VALUE`에서 파생 | `CKA_VALUE`를 기반으로 자동으로 설정됩니다. | 
| `CKA_START_DATE` | 비어 있음 | 인증서의 'not before'(유효 시작) 날짜입니다. | 
| `CKA_END_DATE` | 비어 있음 | 인증서의 'not after'(유효 종료) 날짜입니다. | 
| `CKA_PUBLIC_KEY_INFO` | 비어 있음 | 최대 크기는 16킬로바이트입니다. | 
| `CKA_SUBJECT` | 필수 | 인증서 제목입니다. | 
| `CKA_ID` | 비어 있음 | 최대 크기는 128바이트입니다. 고유성은 적용되지 않습니다. | 
| `CKA_ISSUER` | 비어 있음 | 인증서 발행자입니다. | 
| `CKA_SERIAL_NUMBER` | 비어 있음 | 인증서 일련 번호입니다. | 
| `CKA_VALUE` | 필수 | 최대 크기는 32킬로바이트입니다. | 

# 인증서 스토리지 감사 로그
<a name="pkcs11-certificate-storage-audit-logs"></a>

 AWS CloudHSM은 클러스터의 CloudWatch 로그 그룹에서 Amazon CloudWatch Events 로그 스트림에 데이터를 수정하는 인증서 스토리지 작업에 대한 감사 로그를 작성합니다. 이 로그 스트림은 클러스터 내의 특정 HSM이 아닌 클러스터의 이름이 지정됩니다.

 CloudWatch에서 감사 로그에 액세스하는 방법에 대한 자세한 내용은 [Amazon CloudWatch Logs 및 AWS CloudHSM 감사 로그 작업](get-hsm-audit-logs-using-cloudwatch.md) 섹션을 참조하세요.

## 로그 항목 필드
<a name="pkcs11-certificate-storage-audit-logs-fields"></a>

`object_handle`  
인증서 객체의 고유 식별자입니다.

`op_code`  
수행했거나 시도한 작업입니다. 가능한 값은 다음과 같습니다.  
+ `CreateObject`
+ `DestroyObject`
+ `SetAttributeValues`

`response`  
`OK` 작업이 성공한 경우 또는 다음 오류 유형 중 하나입니다.  
+ `DuplicateAttribute`
+ `InvalidAttributeValue`
+ `ObjectNotFound`
+ `MaxObjectsReached`
+ `InternalFailure`

`attributes`  
속성이 수정되었습니다.

`timestamp`  
Unix 에포크 이후 작업이 발생한 시간(밀리초)입니다.

## 감사 로그 예제
<a name="pkcs11-certificate-storage-audit-logs-examples"></a>

### CreateObject 예제
<a name="pkcs11-certificate-storage-audit-logs-examples-create"></a>

```
{
    "object_handle": 463180677312929947,
    "op_code": "CreateObject",
    "response": "OK",
    "attributes": null,
    "timestamp": 1725482483671
}
```

### DestroyObject 예제
<a name="pkcs11-certificate-storage-audit-logs-examples-delete"></a>

```
{
    "object_handle": 463180677312929947,
    "op_code": "DestroyObject",
    "response": "OK",
    "attributes": null,
    "timestamp": 1725482484559
}
```

### SetAttributeValues 예제
<a name="pkcs11-certificate-storage-audit-logs-examples-set"></a>

```
{
    "object_handle": 463180678453346687,
    "op_code": "SetAttributeValues",
    "response": "OK",
    "attributes": [
        "Label"
    ],
    "timestamp": 1725482488004
}
```

### 실패한 CreateObject 예제
<a name="pkcs11-certificate-storage-audit-logs-examples-error"></a>

```
{
    "object_handle": null,
    "op_code": "CreateObject",
    "response": "MaxObjectsReached",
    "attributes": null,
    "timestamp": 1726084937125
}
```