

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

# PKCS\#11 공급자
<a name="pkcs11-provider-component"></a>

PKCS\#11 공급자 구성 요소(`aws.greengrass.crypto.Pkcs11Provider`)를 사용하면 [PKCS\#11 인터페이스](https://en.wikipedia.org/wiki/PKCS_11)를 통해 HSM(하드웨어 보안 모듈)을 사용하도록 AWS IoT Greengrass 코어 소프트웨어를 구성할 수 있습니다. 이 구성 요소를 사용하면 인증서와 프라이빗 키를 소프트웨어에 노출되거나 복제되지 않도록 안전하게 저장할 수 있습니다. 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.

**참고**  
이 구성 요소는 [Greengrass nucleus](greengrass-nucleus-component.md)에만 필요합니다. [Greengrass nucleus lite](greengrass-nucleus-lite-component.md) v2.5.0 이상에는 기본 제공 PKCS\#11 지원이 포함되어 있으며이 구성 요소가 필요하지 않습니다. 자세한 내용은 AWS IoT Greengrass nucleus lite GitHub 리포지토리의 [PKCS\#11 지원을](https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/PKCS11_SUPPORT.md) 참조하세요.

인증서와 프라이빗 키를 HSM에 저장하는 Greengrass 코어 디바이스를 프로비저닝하려면 AWS IoT Greengrass 코어 소프트웨어를 설치할 때이 구성 요소를 프로비저닝 플러그인으로 지정해야 합니다. 자세한 내용은 [수동 리소스 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어 설치](manual-installation.md) 단원을 참조하십시오.

AWS IoT Greengrass 는 설치 중에 프로비저닝 플러그인으로 지정하기 위해 다운로드할 수 있는 JAR 파일로이 구성 요소를 제공합니다. 다음 URL([https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar))에서 최신 버전의 구성 요소 JAR 파일을 다운로드할 수 있습니다.

**Topics**
+ [버전](#pkcs11-provider-component-versions)
+ [유형](#pkcs11-provider-component-type)
+ [운영 체제](#pkcs11-provider-component-os-support)
+ [요구 사항](#pkcs11-provider-component-requirements)
+ [종속성](#pkcs11-provider-component-dependencies)
+ [구성](#pkcs11-provider-component-configuration)
+ [로컬 로그 파일](#pkcs11-provider-component-log-file)
+ [Changelog](#pkcs11-provider-component-changelog)

## 버전
<a name="pkcs11-provider-component-versions"></a>

이 구성 요소에는 다음과 같은 버전이 있습니다.
+ 2.0.x

## 유형
<a name="pkcs11-provider-component-type"></a>

<a name="public-component-type-plugin-para1"></a>이 구성 요소는 플러그인 구성 요소(`aws.greengrass.plugin`)입니다. [Greengrass nucleus는](greengrass-nucleus-component.md) 이 구성 요소를 nucleus와 동일한 Java 가상 머신(JVM)에서 실행합니다. 코어 디바이스에서 구성 요소의 버전을 변경하면 nucleus가 다시 시작됩니다.

<a name="public-component-type-plugin-para2"></a>이 구성 요소에서는 Greengrass nucleus와 동일한 로그 파일이 사용됩니다. 자세한 내용은 [AWS IoT Greengrass 로그 모니터링](monitor-logs.md) 단원을 참조하십시오.

<a name="public-component-type-more-information"></a>자세한 내용은 [구성 요소 유형](develop-greengrass-components.md#component-types) 단원을 참조하십시오.

## 운영 체제
<a name="pkcs11-provider-component-os-support"></a>

이 구성 요소는 Linux 코어 디바이스에만 설치할 수 있습니다.

## 요구 사항
<a name="pkcs11-provider-component-requirements"></a>

이 구성 요소의 요구 사항은 다음과 같습니다.
+ <a name="hardware-security-module-requirements-key"></a>[PKCS\#1 v1.5](https://tools.ietf.org/html/rfc2313) 서명 체계와 RSA-2048 키 크기(또는 그 이상) 또는 ECC 키를 사용하는 RSA 키가 지원되는 하드웨어 보안 모듈.
**참고**  <a name="hardware-security-module-requirements-key-notes"></a>
ECC 키와 함께 하드웨어 보안 모듈을 사용하려면 [Greengrass nucleus](greengrass-nucleus-component.md) v2.5.6 이상을 사용해야 합니다.  
하드웨어 보안 모듈 및 [보안 암호 관리자](secret-manager-component.md)를 사용하려면 RSA 키가 있는 하드웨어 보안 모듈을 사용해야 합니다.
+ <a name="hardware-security-module-requirements-pkcs11-provider-library"></a> AWS IoT Greengrass 코어 소프트웨어가 런타임에 로드(libdl 사용)하여 PKCS\#11 함수를 호출할 수 있는 PKCS\#11 공급자 라이브러리입니다. PKCS\#11 공급자 라이브러리는 다음 PKCS\#11 API 작업을 구현해야 합니다.
  + `C_Initialize`
  + `C_Finalize`
  + `C_GetSlotList`
  + `C_GetSlotInfo`
  + `C_GetTokenInfo`
  + `C_OpenSession`
  + `C_GetSessionInfo`
  + `C_CloseSession`
  + `C_Login`
  + `C_Logout`
  + `C_GetAttributeValue`
  + `C_FindObjectsInit`
  + `C_FindObjects`
  + `C_FindObjectsFinal`
  + `C_DecryptInit`
  + `C_Decrypt`
  + `C_DecryptUpdate`
  + `C_DecryptFinal`
  + `C_SignInit`
  + `C_Sign`
  + `C_SignUpdate`
  + `C_SignFinal`
  + `C_GetMechanismList`
  + `C_GetMechanismInfo`
  + `C_GetInfo`
  + `C_GetFunctionList`
+ <a name="hardware-security-module-requirements-slot-label"></a>하드웨어 모듈은 PKCS\#11 사양에 정의된 것처럼 슬롯 레이블로 확인할 수 있어야 합니다.
+ <a name="hardware-security-module-requirements-private-key-and-certificate"></a>프라이빗 키와 인증서를 동일한 슬롯의 HSM에 저장해야 하고, HSM이 객체 ID를 지원하는 경우 동일한 객체 레이블과 객체 ID를 사용해야 합니다.
+ <a name="hardware-security-module-requirements-object-label"></a>인증서와 프라이빗 키는 객체 레이블로 확인할 수 있어야 합니다.
+ <a name="hardware-security-module-requirements-private-key-permissions"></a>프라이빗 키에 다음 권한이 있어야 합니다.
  + `sign`
  + `decrypt`
+ <a name="hardware-security-module-requirements-secret-manager-permissions"></a>(선택 사항) [보안 암호 관리자 구성 요소](secret-manager-component.md)를 사용하려면 버전 2.1.0 이상을 사용해야 하며, 프라이빗 키에 다음 권한이 있어야 합니다.
  + `unwrap`
  + `wrap`
+ <a name="hardware-security-module-requirements-environment-variable"></a>(선택 사항) TPM2 라이브러리를 사용하고 Greengrass 코어를 서비스로 실행하는 경우 PKCS\#11 스토어의 위치가 포함된 환경 변수를 제공해야 합니다. 다음 예제는 필수 환경 변수가 있는 systemd 서비스 파일입니다.

  ```
  [Unit]
  Description=Greengrass Core
  After=network.target
  
  [Service]
  Type=simple
  PIDFile=/var/run/greengrass.pid
  Environment=TPM2_PKCS11_STORE={{/path/to/store/directory}}
  RemainAfterExit=no
  Restart=on-failure
  RestartSec=10
  ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader
  
  [Install]
  WantedBy=multi-user.target
  ```

## 종속성
<a name="pkcs11-provider-component-dependencies"></a>

구성 요소를 배포할 때는 호환되는 버전의 종속성 AWS IoT Greengrass 도 배포합니다. 즉, 구성 요소를 성공적으로 배포하려면 구성 요소 및 모든 해당 종속성에 대한 요구 사항을 충족해야 합니다. 이 섹션에는 이 구성 요소의 [릴리스된 버전](#pkcs11-provider-component-changelog)에 대한 종속성과 각 종속성에 대한 구성 요소 버전을 정의하는 의미 체계 버전 제약 조건이 나열되어 있습니다. [AWS IoT Greengrass 콘솔](https://console.aws.amazon.com//greengrass)에서도 각 구성 요소 버전에 대한 종속성을 볼 수 있습니다. 구성 요소 세부 정보 페이지에서 **종속성** 목록을 찾습니다.

------
#### [ 2.0.11 ]

다음 표에는 이 구성 요소의 버전 2.0.11에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.17.0 | 소프트 | 

------
#### [ 2.0.10 ]

다음 표에는 이 구성 요소의 버전 2.0.10에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.16.0  | 소프트 | 

------
#### [ 2.0.9 ]

다음 표에는 이 구성 요소의 버전 2.0.9에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.15.0  | 소프트 | 

------
#### [ 2.0.8 ]

다음 표에는 이 구성 요소의 버전 2.0.8에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.14.0  | 소프트 | 

------
#### [ 2.0.7 ]

다음 표에는 이 구성 요소의 버전 2.0.7에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.13.0  | 소프트 | 

------
#### [ 2.0.6 ]

다음 표에는 이 구성 요소의 버전 2.0.6에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.12.0  | 소프트 | 

------
#### [ 2.0.5 ]

다음 표에는 이 구성 요소의 버전 2.0.5에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.11.0  | 소프트 | 

------
#### [ 2.0.4 ]

다음 표에는 이 구성 요소의 버전 2.0.4에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.10.0  | 소프트 | 

------
#### [ 2.0.3 ]

다음 표에는 이 구성 요소의 버전 2.0.3에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.9.0  | 소프트 | 

------
#### [ 2.0.2 ]

다음 표에는 이 구성 요소의 버전 2.0.2에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) | >=2.5.3 <2.8.0  | 소프트 | 

------
#### [ 2.0.1 ]

다음 표에는 이 구성 요소의 버전 2.0.1에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) |  >=2.5.3 <2.7.0  | 소프트 | 

------
#### [ 2.0.0 ]

다음 표에는 이 구성 요소의 버전 2.0.0에 대한 종속성이 나열되어 있습니다.


| 종속성 | 호환 버전 | 종속성 유형 | 
| --- | --- | --- | 
| [Greengrass nucleus](greengrass-nucleus-component.md) |  >=2.5.3 <2.6.0  | 소프트 | 

------

구성 요소 종속성에 대한 자세한 내용은 [구성 요소 레시피 참조](component-recipe-reference.md#recipe-reference-component-dependencies)를 참조하세요.

## 구성
<a name="pkcs11-provider-component-configuration"></a>

이 구성 요소는 구성 요소를 배포할 때 사용자 지정할 수 있는 다음 구성 파라미터를 제공합니다.<a name="pkcs11-provider-component-configuration-parameters"></a>

`name`  
PKCS\#11 구성의 이름입니다.

`library`  
 AWS IoT Greengrass 코어 소프트웨어가 libdl로 로드할 수 있는 PKCS\#11 구현 라이브러리의 절대 파일 경로입니다.

`slot`  
프라이빗 키와 디바이스 인증서가 포함된 슬롯의 ID입니다. 이 값은 슬롯 인덱스 또는 슬롯 레이블과 다릅니다.

`userPin`  
슬롯 액세스에 사용할 사용자 PIN입니다.

**Example 예: 구성 병합 업데이트**  

```
{
  "name": "softhsm_pkcs11",
  "library": "/usr/lib/softhsm/libsofthsm2.so",
  "slot": 1,
  "userPin": "1234"
}
```

## 로컬 로그 파일
<a name="pkcs11-provider-component-log-file"></a>

이 구성 요소는 [Greengrass nucleus](greengrass-nucleus-component.md) 구성요소와 동일한 로그 파일을 사용합니다.

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

```
{{/greengrass/v2}}/logs/greengrass.log
```

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

```
{{C:\greengrass\v2}}\logs\greengrass.log
```

------

**이 구성 요소의 로그를 보려면**
+ 코어 디바이스에서 다음 명령을 실행하여 실시간으로 이 구성 요소의 로그 파일을 봅니다. `{{/greengrass/v2}}` 또는 {{C:\\greengrass\\v2}}를 AWS IoT Greengrass 루트 폴더의 경로로 바꿉니다.

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

  ```
  sudo tail -f {{/greengrass/v2}}/logs/greengrass.log
  ```

------
#### [ Windows (PowerShell) ]

  ```
  Get-Content {{C:\greengrass\v2}}\logs\greengrass.log -Tail 10 -Wait
  ```

------

## Changelog
<a name="pkcs11-provider-component-changelog"></a>

다음 표에는 각 구성 요소 버전의 변경 사항이 설명되어 있습니다.


|  **버전**  |  **변경 사항**  | 
| --- | --- | 
| 2.0.12 | Greengrass nucleus 버전 2.17.0 릴리스의 구성 요소 버전을 업데이트합니다. | 
| 2.0.11 | Greengrass nucleus 버전 2.16.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.10 | Greengrass nucleus 버전 2.15.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.9 | Greengrass nucleus 버전 2.14.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.8 | Greengrass nucleus 버전 2.13.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.7 | Greengrass nucleus 버전 2.12.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.6 | Greengrass nucleus 버전 2.11.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.5 | Greengrass nucleus 버전 2.10.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.4 | Greengrass nucleus 버전 2.9.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.3 | Greengrass nucleus 버전 2.8.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.2 | Greengrass nucleus 버전 2.7.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.1 | Greengrass nucleus 버전 2.6.0 릴리스용으로 업데이트된 버전입니다. | 
| 2.0.0 | 초기 버전입니다. | 