

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 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\$1 FindObjects](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` | 空 | 证书“不早于”日期。 | 
| `CKA_END_DATE` | 空 | 证书“不迟于”日期。 | 
| `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 日志组中单独的 A CloudWatch mazon Events 日志流。此日志流是为集群命名的，而不是为集群中的特定 HSM 命名的。

 有关访问审核日志的信息 CloudWatch，请参阅[使用 Amazon CloudWatch 日志和 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 epoch 以来的毫秒数表示。

## 审计日志示例
<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
}
```