

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 發行私有終端實體憑證
<a name="PcaIssueCert"></a>

有了私有 CA，您可以從 AWS Certificate Manager (ACM) 或 請求私有終端實體憑證 AWS 私有 CA。下表會比較這兩種服務的功能。


****  

|  功能  |  ACM  |  AWS 私有 CA  | 
| --- | --- | --- | 
|  發行終端實體憑證  |  ✓ （使用 [RequestCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_RequestCertificate.html) 或主控台）  |  ✓ （使用 [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html))  | 
|  與負載平衡器和面向網際網路 AWS 的服務建立關聯  |  ✓  |  不支援  | 
| 受管憑證續約 | ✓ | 透過 ACM 間接[支援](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html)  | 
|  主控台支援  |  ✓  |  不支援  | 
|  API 支援  |  ✓  |  ✓  | 
|  CLI 支援  |  ✓  |  ✓  | 

當 AWS 私有 CA 建立憑證時，它會遵循指定憑證類型和路徑長度的範本。如果未將範本 ARN 提供給建立憑證的 API 或 CLI 陳述式，則預設會套用 [EndEntityCertificate/V1](template-definitions.md#EndEntityCertificate-V1) 範本。如需可用憑證範本的詳細資訊，請參閱[使用 AWS 私有 CA 憑證範本](UsingTemplates.md)。

雖然 ACM 憑證是以公有信任為基礎設計，但 AWS 私有 CA 可滿足您的私有 PKI 需求。因此，您可以使用 AWS 私有 CA API 和 CLI，以 ACM 不允許的方式設定憑證。這些索引標籤包括以下項目：
+ 使用任何主體名稱建立憑證。
+ 使用任何[支援的私有金鑰演算法和金鑰長度](https://docs.aws.amazon.com/privateca/latest/userguide/supported-algorithms.html)。
+ 使用任何[支援的簽署演算法](https://docs.aws.amazon.com/privateca/latest/userguide/supported-algorithms.html)。
+ 指定私有 [CA](PcaCreateCa.html) 和私有[憑證](PcaIssueCert.html)的任何有效期間。

使用 建立私有 TLS 憑證之後 AWS 私有 CA，您可以將其[匯入](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html) ACM，並搭配支援 AWS 的服務使用。

**注意**  
使用下列程序、 **issue-certificate**命令或 [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) API 動作建立的憑證無法直接匯出以供外部使用 AWS。不過，您可以使用私有 CA 來簽署透過 ACM 發行的憑證，而且這些憑證可以與其私密金鑰一起匯出。如需詳細資訊，請參閱《*ACM 使用者指南*》中的[請求私有憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html)和[匯出私有憑證](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html)。

## 發行標準憑證 (AWS CLI)
<a name="IssueCertCli"></a>

您可以使用 AWS 私有 CA CLI 命令 [issue-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm-pca/issue-certificate.html) 或 API 動作 [IssueCertificate](https://docs.aws.amazon.com/privateca/latest/APIReference/API_IssueCertificate.html) 來請求終端實體憑證。此命令需要您要使用的私有 CA 的 Amazon Resource Name (ARN) 來發行憑證。您還必須使用 [OpenSSL](https://www.openssl.org/) 等程式產生憑證簽署請求 (CSR)。

如果您使用 AWS 私有 CA API 或 AWS CLI 發行私有憑證，則憑證將不受管理，這表示您無法使用 ACM 主控台、ACM CLI 或 ACM API 來檢視或匯出憑證，而且憑證不會自動續約。不過，您可以使用 PCA [get-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm-pca/get-certificate.html) 命令來擷取憑證詳細資訊，如果您擁有 CA，則可以建立[稽核報告](PcaAuditReport.md)。

**建立憑證時的考量事項**
+ 為符合 [RFC 5280](https://datatracker.ietf.org/doc/html/rfc5280)，您提供的網域名稱長度 （技術上為通用名稱） 不得超過 64 個八位元組 （字元），包括句點。若要新增較長的網域名稱，請在主體別名欄位中指定，該欄位支援長度上限為 253 個八位元組的名稱。
+ 如果您使用的是 1.6.3 AWS CLI 版或更新版本，請在指定 base64 編碼的輸入檔案`fileb://`時，使用 字首，例如 CSRs。這可確保 AWS 私有 CA 正確剖析資料。

下列 OpenSSL 命令會產生憑證的 CSR 和私有金鑰：

```
$ openssl req -out csr.pem -new -newkey rsa:2048 -nodes -keyout private-key.pem
```

您可以檢查 CSR 的內容，如下所示：

```
$ openssl req -in csr.pem -text -noout
```

產生的輸出應類似下列縮寫範例：

```
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=US, O=Big Org, CN=example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ca:85:f4:3a:b7:5f:e2:66:be:fc:d8:97:65:3d:
                    a4:3d:30:c6:02:0a:9e:1c:ca:bb:15:63:ca:22:81:
                    00:e1:a9:c0:69:64:75:57:56:53:a1:99:ee:e1:cd:
                    ...
                    aa:38:73:ff:3d:b7:00:74:82:8e:4a:5d:da:5f:79:
                    5a:89:52:e7:de:68:95:e0:16:9b:47:2d:57:49:2d:
                    9b:41:53:e2:7f:e1:bd:95:bf:eb:b3:a3:72:d6:a4:
                    d3:63
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         74:18:26:72:33:be:ef:ae:1d:1e:ff:15:e5:28:db:c1:e0:80:
         42:2c:82:5a:34:aa:1a:70:df:fa:4f:19:e2:5a:0e:33:38:af:
         21:aa:14:b4:85:35:9c:dd:73:98:1c:b7:ce:f3:ff:43:aa:11:
         ....
         3c:b2:62:94:ad:94:11:55:c2:43:e0:5f:3b:39:d3:a6:4b:47:
         09:6b:9d:6b:9b:95:15:10:25:be:8b:5c:cc:f1:ff:7b:26:6b:
         fa:81:df:e4:92:e5:3c:e5:7f:0e:d8:d9:6f:c5:a6:67:fb:2b:
         0b:53:e5:22
```

下列命令會建立憑證。由於未指定範本，預設會發出基本終端實體憑證。

```
$ aws acm-pca issue-certificate \
      --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \
      --csr fileb://csr.pem \
      --signing-algorithm "SHA256WITHRSA" \
      --validity Value=365,Type="DAYS"
```

已發行憑證的 ARN 會傳回：

```
{
   "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID"
}
```

**注意**  
AWS 私有 CA 收到**issue-certificate**命令時， 會立即傳回具有序號的 ARN。不過，憑證處理會以非同步方式進行，但仍可能會失敗。如果發生這種情況，使用新 ARN 的**get-certificate**命令也會失敗。

## 使用 APIPassthrough 範本發行具有自訂主旨名稱的憑證
<a name="custom-subject-1"></a>

在此範例中，會發出包含自訂主旨名稱元素的憑證。除了提供 中類似 的 CSR 之外[發行標準憑證 (AWS CLI)](#IssueCertCli)，您還會將兩個額外的引數傳遞至 **issue-certificate**命令：APIPassthrough 範本的 ARN，以及指定自訂屬性及其物件識別符 (OIDs JSON 組態檔案。您無法`StandardAttributes`搭配 使用 `CustomAttributes`。不過，您可以將標準 OIDs 做為 的一部分傳遞`CustomAttributes`。預設主旨名稱 OIDs 會列在下表中 （來自 [RFC 4519](https://www.rfc-editor.org/rfc/rfc4519) 和[全域 OID 參考資料庫](https://oidref.com)的資訊）：


|  主旨名稱  |  縮寫  |  物件 ID  | 
| --- | --- | --- | 
|  countryName  |  c  | 2.5.4.6 | 
|  commonName  |  cn  | 2.5.4.3 | 
|  dnQualifier 【辨別名稱限定詞】  |    | 2.5.4.46 | 
|  generationQualifier  |    | 2.5.4.44 | 
|  givenName  |    | 2.5.4.42 | 
|  初始  |    | 2.5.4.43 | 
|  地區性  |  l  | 2.5.4.7 | 
|  organizationName  |  o  | 2.5.4.10 | 
|  organizationalUnitName  |  ou  | 2.5.4.11 | 
|  假名  |    | 2.5.4.65 | 
|  serialNumber  |    | 2.5.4.5 | 
|  st 【狀態】  |    | 2.5.4.8 | 
|  姓氏  |  sn  | 2.5.4.4 | 
|  標題  |    | 2.5.4.12 | 
|  domainComponent  |  dc  |  0.9.2342.19200300.100.1.25  | 
|  userid  |    |  0.9.2342.19200300.100.1.1  | 

範例組態檔案`api_passthrough_config.txt`包含下列程式碼：

```
{
  "Subject": {
    "CustomAttributes": [
      {
        "ObjectIdentifier": "2.5.4.6",
        "Value": "US"
      },
      {
        "ObjectIdentifier": "1.3.6.1.4.1.37244.1.1",
        "Value": "BCDABCDA12341234"
      },
      {
        "ObjectIdentifier": "1.3.6.1.4.1.37244.1.5",
        "Value": "CDABCDAB12341234"
      }
    ]
  }
}
```

使用下列命令來發行憑證：

```
$ aws acm-pca issue-certificate \
      --validity Type=DAYS,Value=10 
      --signing-algorithm "SHA256WITHRSA" \
      --csr fileb://csr.pem \
      --api-passthrough file://api_passthrough_config.txt \
      --template-arn arn:aws:acm-pca:::template/BlankEndEntityCertificate_APIPassthrough/V1 \
      --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566
```

已發行憑證的 ARN 會傳回：

```
{
   "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID"
}
```

在本機擷取憑證，如下所示：

```
$ aws acm-pca get-certificate \
      --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \
      --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \
      jq -r .'Certificate' > cert.pem
```

您可以使用 OpenSSL 檢查憑證的內容：

```
$ openssl x509 -in cert.pem -text -noout
```

**注意**  
您也可以建立私有 CA，將自訂屬性傳遞給其發行的每個憑證。

## 使用 APIPassthrough 範本發行具有自訂擴充功能的憑證
<a name="custom-subject-2"></a>

在此範例中，會發出包含自訂延伸項目的憑證。為此，您需要將三個引數傳遞至 **issue-certificate**命令：APIPassthrough 範本的 ARN，以及指定自訂副檔名的 JSON 組態檔案，以及類似 中所示的 CSR[發行標準憑證 (AWS CLI)](#IssueCertCli)。

範例組態檔案`api_passthrough_config.txt`包含下列程式碼：

```
{
  "Extensions": {
    "CustomExtensions": [
      {
        "ObjectIdentifier": "2.5.29.30",
        "Value": "MBWgEzARgg8ucGVybWl0dGVkLnRlc3Q=",
        "Critical": true
      }
    ]
  }
}
```

自訂憑證的發行方式如下：

```
$ aws acm-pca issue-certificate \
      --validity Type=DAYS,Value=10 
      --signing-algorithm "SHA256WITHRSA" \
      --csr fileb://csr.pem \
      --api-passthrough file://api_passthrough_config.txt \
      --template-arn arn:aws:acm-pca:::template/EndEntityCertificate_APIPassthrough/V1 \
      --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566
```

已發行憑證的 ARN 會傳回：

```
{
   "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID"
}
```

在本機擷取憑證，如下所示：

```
$ aws acm-pca get-certificate \
      --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \
      --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \
      jq -r .'Certificate' > cert.pem
```

您可以使用 OpenSSL 檢查憑證的內容：

```
$ openssl x509 -in cert.pem -text -noout
```