

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Penandatanganan sertifikat yang dikelola sendiri menggunakan penyedia AWS IoT Core sertifikat
<a name="provisioning-cert-provider"></a>

Anda dapat membuat penyedia AWS IoT Core sertifikat untuk menandatangani permintaan penandatanganan sertifikat (CSRs) dalam penyediaan AWS IoT armada. Penyedia sertifikat mereferensikan fungsi Lambda dan API [`CreateCertificateFromCsr`MQTT](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) untuk penyediaan armada. Fungsi Lambda menerima CSR dan mengembalikan sertifikat klien yang ditandatangani.

Bila Anda tidak memiliki penyedia sertifikat dengan Anda Akun AWS, [CreateCertificateFromCsr MQTT API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) dipanggil dalam penyediaan armada untuk menghasilkan sertifikat dari CSR. Setelah Anda membuat penyedia sertifikat, perilaku API [CreateCertificateFromCsr MQTT akan berubah dan semua panggilan ke API](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) MQTT ini akan memanggil penyedia sertifikat untuk mengeluarkan sertifikat.

Dengan penyedia AWS IoT Core sertifikat, Anda dapat menerapkan solusi yang memanfaatkan otoritas sertifikat swasta (CAs) seperti [AWS Private CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), kepercayaan publik lainnya CAs, atau Infrastruktur Kunci Publik (PKI) Anda sendiri untuk menandatangani CSR. Selain itu, Anda dapat menggunakan penyedia sertifikat untuk menyesuaikan bidang sertifikat klien Anda seperti periode validitas, algoritma penandatanganan, penerbit, dan ekstensi.

**penting**  
Anda hanya dapat membuat satu penyedia sertifikat per Akun AWS. Perubahan perilaku penandatanganan berlaku untuk seluruh armada yang memanggil [API CreateCertificateFromCsr MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) hingga Anda menghapus penyedia sertifikat dari penyedia sertifikat. Akun AWS

**Topics**
+ [Cara kerja penandatanganan sertifikat yang dikelola sendiri dalam penyediaan armada](#provisioning-cert-provider-how-it-works)
+ [Input fungsi Lambda penyedia sertifikat](#provisioning-cert-provider-lambda-input)
+ [Nilai pengembalian fungsi Lambda penyedia sertifikat](#provisioning-cert-provider-lambda-return)
+ [Contoh fungsi Lambda](#provisioning-cert-provider-lambda)
+ [Penandatanganan sertifikat yang dikelola sendiri untuk penyediaan armada](#provisioning-self-certificate-signing)
+ [AWS CLI perintah untuk penyedia sertifikat](#provisioning-cert-provider-cli)

## Cara kerja penandatanganan sertifikat yang dikelola sendiri dalam penyediaan armada
<a name="provisioning-cert-provider-how-it-works"></a>

### Konsep utama
<a name="provisioning-cert-provider-concepts"></a>

Konsep berikut memberikan detail yang dapat membantu Anda memahami cara kerja penandatanganan sertifikat yang dikelola sendiri dalam penyediaan AWS IoT armada. Untuk informasi selengkapnya, lihat [Menyediakan perangkat yang tidak memiliki sertifikat perangkat menggunakan penyediaan armada](https://docs.aws.amazon.com//iot/latest/developerguide/provision-wo-cert.html).

**AWS IoT penyediaan armada**  
Dengan penyediaan AWS IoT armada (kependekan dari penyediaan armada), AWS IoT Core menghasilkan dan mengirimkan sertifikat perangkat dengan aman ke perangkat Anda saat mereka terhubung untuk pertama kalinya. AWS IoT Core Anda dapat menggunakan penyediaan armada untuk menghubungkan perangkat yang tidak memiliki sertifikat perangkat. AWS IoT Core

**Permintaan penandatanganan sertifikat (CSR)**  
Dalam proses penyediaan armada, perangkat membuat permintaan AWS IoT Core melalui [penyediaan armada](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html) MQTT. APIs Permintaan ini mencakup permintaan penandatanganan sertifikat (CSR), yang akan ditandatangani untuk membuat sertifikat klien. 

**AWS penandatanganan sertifikat terkelola dalam penyediaan armada**  
AWS managed adalah pengaturan default untuk penandatanganan sertifikat dalam penyediaan armada. Dengan penandatanganan sertifikat AWS terkelola, AWS IoT Core akan menandatangani CSRs menggunakan sendiri CAs.

**Penandatanganan sertifikat yang dikelola sendiri dalam penyediaan armada**  
Self-managed adalah opsi lain untuk penandatanganan sertifikat dalam penyediaan armada. Dengan penandatanganan sertifikat yang dikelola sendiri, Anda membuat penyedia AWS IoT Core sertifikat untuk ditandatangani CSRs. Anda dapat menggunakan penandatanganan sertifikat yang dikelola sendiri untuk menandatangani CSRs dengan CA yang dihasilkan oleh AWS Private CA, CA tepercaya publik lainnya, atau Infrastruktur Kunci Publik (PKI) Anda sendiri.

**AWS IoT Core penyedia sertifikat**  
AWS IoT Core penyedia sertifikat (kependekan dari penyedia sertifikat) adalah sumber daya yang dikelola pelanggan yang digunakan untuk penandatanganan sertifikat yang dikelola sendiri dalam penyediaan armada.

### Diagram
<a name="provisioning-cert-provider-diagram"></a>

Diagram berikut adalah ilustrasi yang disederhanakan tentang cara kerja penandatanganan sertifikat mandiri dalam penyediaan AWS IoT armada.

![\[AWS IoT Core penyedia sertifikat untuk penyediaan armada\]](http://docs.aws.amazon.com/id_id/iot/latest/developerguide/images/provisioning-cert-provider.png)

+ Ketika perangkat IoT baru diproduksi atau diperkenalkan ke armada, diperlukan sertifikat klien untuk mengautentikasi dirinya sendiri. AWS IoT Core
+ Sebagai bagian dari proses penyediaan armada, perangkat membuat permintaan AWS IoT Core untuk sertifikat klien melalui [penyediaan armada](https://docs.aws.amazon.com//iot/latest/developerguide/fleet-provision-api.html) MQTT. APIs Permintaan ini mencakup permintaan penandatanganan sertifikat (CSR).
+ AWS IoT Core memanggil penyedia sertifikat dan meneruskan CSR sebagai masukan ke penyedia.
+ Penyedia sertifikat mengambil CSR sebagai masukan dan mengeluarkan sertifikat klien.

  Untuk penandatanganan sertifikat AWS terkelola, AWS IoT Core tandatangani CSR menggunakan CA-nya sendiri dan mengeluarkan sertifikat klien.
+ Dengan sertifikat klien yang dikeluarkan, perangkat akan melanjutkan penyediaan armada dan membuat koneksi yang aman dengannya. AWS IoT Core

## Input fungsi Lambda penyedia sertifikat
<a name="provisioning-cert-provider-lambda-input"></a>

AWS IoT Core mengirimkan objek berikut ke fungsi Lambda saat perangkat mendaftar dengannya. Nilai CSR dalam [format Privacy-Enhanced Mail (PEM)](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-format.html) yang disediakan dalam permintaan. `certificateSigningRequest` `CreateCertificateFromCsr` `principalId`Ini adalah ID dari prinsipal yang digunakan untuk terhubung AWS IoT Core saat membuat `CreateCertificateFromCsr` permintaan. `clientId`adalah ID klien yang disetel untuk koneksi MQTT.

```
{
	"certificateSigningRequest": "string",
	"principalId": "string",
	"clientId": "string"
}
```

## Nilai pengembalian fungsi Lambda penyedia sertifikat
<a name="provisioning-cert-provider-lambda-return"></a>

Fungsi Lambda harus mengembalikan respons yang berisi nilai. `certificatePem` Berikut ini adalah contoh respon yang sukses. AWS IoT Core akan menggunakan nilai pengembalian (`certificatePem`) untuk membuat sertifikat.

```
{
	"certificatePem": "string"
}
```

Jika pendaftaran berhasil, `CreateCertificateFromCsr` akan mengembalikan yang sama `certificatePem` dalam `CreateCertificateFromCsr` tanggapan. Untuk informasi selengkapnya, lihat contoh payload respons dari. [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr)

## Contoh fungsi Lambda
<a name="provisioning-cert-provider-lambda"></a>

Sebelum membuat penyedia sertifikat, Anda harus membuat fungsi Lambda untuk menandatangani CSR. Berikut ini adalah contoh fungsi Lambda di Python. Fungsi ini memanggil AWS Private CA untuk menandatangani input CSR, menggunakan CA pribadi dan algoritma `SHA256WITHRSA` penandatanganan. Sertifikat klien yang dikembalikan akan berlaku selama satu tahun. Untuk informasi selengkapnya tentang AWS Private CA dan cara membuat CA pribadi, lihat [Apa itu CA AWS Pribadi?](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) dan [Membuat CA pribadi](https://docs.aws.amazon.com/privateca/latest/userguide/create-CA.html).

```
import os
import time
import uuid
import boto3

def lambda_handler(event, context):
    ca_arn = os.environ['CA_ARN']
    csr = (event['certificateSigningRequest']).encode('utf-8')

    acmpca = boto3.client('acm-pca')
    cert_arn = acmpca.issue_certificate(
        CertificateAuthorityArn=ca_arn, 
        Csr=csr,
        Validity={"Type": "DAYS", "Value": 365}, 
        SigningAlgorithm='SHA256WITHRSA',
        IdempotencyToken=str(uuid.uuid4())
    )['CertificateArn']
    
    # Wait for certificate to be issued
    time.sleep(1)    
    cert_pem = acmpca.get_certificate(
        CertificateAuthorityArn=ca_arn,
        CertificateArn=cert_arn
    )['Certificate']
    
    return {
        'certificatePem': cert_pem
    }
```

**penting**  
Sertifikat yang dikembalikan oleh fungsi Lambda harus memiliki nama subjek dan kunci publik yang sama dengan Permintaan Penandatanganan Sertifikat (CSR).
Fungsi Lambda harus selesai berjalan dalam 5 detik.
Fungsi Lambda harus sama Akun AWS dan Wilayah sebagai sumber daya penyedia sertifikat.
Kepala AWS IoT layanan harus diberikan izin pemanggilan ke fungsi Lambda. Untuk menghindari [masalah deputi yang membingungkan](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html), kami sarankan Anda mengatur `sourceArn` dan `sourceAccount` untuk izin pemanggilan. Untuk informasi lebih lanjut, lihat [Pencegahan Deputi Bingung Lintas Layanan](https://docs.aws.amazon.com//iot/latest/developerguide/cross-service-confused-deputy-prevention.html).

Contoh kebijakan berbasis sumber daya berikut untuk Lambda memberikan AWS IoT izin untuk [menjalankan fungsi Lambda](https://docs.aws.amazon.com//lambda/latest/dg/access-control-resource-based.html):

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Id": "InvokePermission",
	"Statement": [
		{
			"Sid": "LambdaAllowIotProvider",
			"Effect": "Allow",
			"Principal": {
				"Service": "iot.amazonaws.com"
			},
			"Action": "lambda:InvokeFunction",
			"Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
			"Condition": {
				"StringEquals": {
					"AWS:SourceAccount": "123456789012"
				},
				"ArnLike": {
				"AWS:SourceArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider/my-certificate-provider"
				}
			}
		}
	]
}
```

## Penandatanganan sertifikat yang dikelola sendiri untuk penyediaan armada
<a name="provisioning-self-certificate-signing"></a>

Anda dapat memilih penandatanganan sertifikat yang dikelola sendiri untuk penyediaan armada menggunakan atau. AWS CLI Konsol Manajemen AWS

### AWS CLI
<a name="provisioning-self-certificate-signing-cli"></a>

Untuk memilih penandatanganan sertifikat yang dikelola sendiri, Anda harus membuat penyedia AWS IoT Core sertifikat untuk CSRs masuk penyediaan armada. AWS IoT Core memanggil penyedia sertifikat, yang mengambil CSR sebagai input dan mengembalikan sertifikat klien. Untuk membuat penyedia sertifikat, gunakan operasi `CreateCertificateProvider` API atau perintah `create-certificate-provider` CLI.

**catatan**  
Setelah Anda membuat penyedia sertifikat, perilaku [`CreateCertificateFromCsr`API untuk penyediaan armada](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) akan berubah sehingga semua panggilan ke `CreateCertificateFromCsr` akan memanggil penyedia sertifikat untuk membuat sertifikat. Diperlukan beberapa menit agar perilaku ini berubah setelah penyedia sertifikat dibuat.

```
aws iot create-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Berikut ini menunjukkan contoh output untuk perintah ini:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Untuk informasi selengkapnya, lihat `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` dari *Referensi *AWS IoT*API*.

### Konsol Manajemen AWS
<a name="provisioning-self-certificate-signing-console"></a>

Untuk memilih penandatanganan sertifikat yang dikelola sendiri menggunakan Konsol Manajemen AWS, ikuti langkah-langkahnya:

1. Pergi ke [AWS IoT konsol](https://console.aws.amazon.com//iot/home).

1. Di navigasi kiri, di bawah **Keamanan**, pilih **Penandatanganan sertifikat**.

1. Pada halaman **Penandatanganan sertifikat**, di bawah **Detail penandatanganan sertifikat**, pilih **Edit metode penandatanganan sertifikat**.

1. Pada halaman **Edit metode penandatanganan sertifikat, di bawah Metode** **penandatanganan sertifikat**, pilih **Dikelola sendiri**.

1. Di bagian **Pengaturan yang dikelola sendiri**, masukkan nama untuk penyedia sertifikat, lalu buat atau pilih fungsi Lambda.

1. Pilih **Perbarui penandatanganan sertifikat**.

## AWS CLI perintah untuk penyedia sertifikat
<a name="provisioning-cert-provider-cli"></a>

### Buat penyedia sertifikat
<a name="provisioning-create-cert-provider"></a>

Untuk membuat penyedia sertifikat, gunakan operasi `CreateCertificateProvider` API atau perintah `create-certificate-provider` CLI. 

**catatan**  
Setelah Anda membuat penyedia sertifikat, perilaku [`CreateCertificateFromCsr`API untuk penyediaan armada](https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) akan berubah sehingga semua panggilan ke `CreateCertificateFromCsr` akan memanggil penyedia sertifikat untuk membuat sertifikat. Diperlukan beberapa menit agar perilaku ini berubah setelah penyedia sertifikat dibuat.

```
aws iot create-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-1 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Berikut ini menunjukkan contoh output untuk perintah ini:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Untuk informasi selengkapnya, lihat `[CreateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateProvider.html)` dari *Referensi *AWS IoT*API*.

### Perbarui penyedia sertifikat
<a name="provisioning-update-cert-provider"></a>

Untuk memperbarui penyedia sertifikat, gunakan operasi `UpdateCertificateProvider` API atau perintah `update-certificate-provider` CLI.

```
aws iot update-certificate-provider \
                --certificateProviderName my-certificate-provider \
                --lambdaFunctionArn arn:aws:lambda:us-east-1:123456789012:function:my-function-2 \
                --accountDefaultForOperations CreateCertificateFromCsr
```

Berikut ini menunjukkan contoh output untuk perintah ini:

```
{
	"certificateProviderName": "my-certificate-provider",
	"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
}
```

Untuk informasi selengkapnya, lihat `[UpdateCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateCertificateProvider.html)` dari *Referensi *AWS IoT*API*.

### Jelaskan penyedia sertifikat
<a name="provisioning-describe-cert-provider"></a>

Untuk mendeskripsikan penyedia sertifikat, gunakan operasi `DescribeCertificateProvider` API atau perintah `describe-certificate-provider` CLI.

```
aws iot describe-certificate-provider --certificateProviderName my-certificate-provider
```

Berikut ini menunjukkan contoh output untuk perintah ini:

```
{
	"certificateProviderName": "my-certificate-provider",
	"lambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
	"accountDefaultForOperations": [
		"CreateCertificateFromCsr"
	],
	"creationDate": "2022-11-03T00:15",
	"lastModifiedDate": "2022-11-18T00:15"
}
```

Untuk informasi selengkapnya, lihat `[DescribeCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeCertificateProvider.html)` dari *Referensi *AWS IoT*API*.

### Hapus penyedia sertifikat
<a name="provisioning-delete-cert-provider"></a>

Untuk menghapus penyedia sertifikat, gunakan operasi `DeleteCertificateProvider` API atau perintah `delete-certificate-provider` CLI. Jika Anda menghapus sumber daya penyedia sertifikat, perilaku `CreateCertificateFromCsr` akan dilanjutkan, dan AWS IoT akan membuat sertifikat yang ditandatangani oleh AWS IoT dari CSR.

```
aws iot delete-certificate-provider --certificateProviderName my-certificate-provider
```

Perintah ini tidak menghasilkan output apa pun. 

Untuk informasi selengkapnya, lihat `[DeleteCertificateProvider](https://docs.aws.amazon.com//iot/latest/apireference/API_DeleteCertificateProvider.html)` dari *Referensi *AWS IoT*API*.

### Daftar penyedia sertifikat
<a name="provisioning-list-cert-provider"></a>

Untuk membuat daftar penyedia sertifikat di dalam Anda Akun AWS, gunakan operasi `ListCertificateProviders` API atau perintah `list-certificate-providers` CLI.

```
aws iot list-certificate-providers
```

Berikut ini menunjukkan contoh output untuk perintah ini:

```
{
	"certificateProviders": [
		{
			"certificateProviderName": "my-certificate-provider",
			"certificateProviderArn": "arn:aws:iot:us-east-1:123456789012:certificateprovider:my-certificate-provider"
		}
	]
}
```

Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html](https://docs.aws.amazon.com//iot/latest/apireference/API_ListCertificateProviders.html)dari *Referensi *AWS IoT*API*.