View a markdown version of this page

Self-managed penandatanganan sertifikat menggunakan AWS IoT Core penyedia sertifikat - AWS IoT Core

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

Self-managed penandatanganan sertifikat menggunakan AWS IoT Core penyedia sertifikat

Anda dapat membuat penyedia AWS IoT Core sertifikat untuk menandatangani permintaan penandatanganan sertifikat (CSR) dalam penyediaan AWS IoT armada. Penyedia sertifikat mereferensikan fungsi Lambda dan API CreateCertificateFromCsr MQTT untuk penyediaan armada. Fungsi Lambda menerima CSR dan mengembalikan sertifikat klien yang ditandatangani.

Jika Anda tidak memiliki penyedia sertifikat Akun AWS, API CreateCertificateFromCsr MQTT 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 MQTT ini akan memanggil penyedia sertifikat untuk mengeluarkan sertifikat.

Dengan penyedia AWS IoT Core sertifikat, Anda dapat menerapkan solusi yang menggunakan otoritas sertifikat pribadi (CA) seperti, CA tepercaya publik lainnya AWS Private CA, 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 hingga Anda menghapus penyedia sertifikat dari. Akun AWS

Cara kerja penandatanganan sertifikat yang dikelola sendiri dalam penyediaan armada

Konsep Utama

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 Penyediaan perangkat yang tidak memiliki sertifikat perangkat menggunakan penyediaan armada.

AWS IoT penyediaan armada

Dengan AWS IoT penyediaan armada (kependekan dari penyediaan armada), AWS IoT Core menghasilkan dan mengirimkan sertifikat perangkat dengan aman ke perangkat Anda saat mereka terhubung AWS IoT Core untuk pertama kalinya. 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 API MQTT penyedi aan armada. 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 terkel AWS ola, AWS IoT Core akan menandatangani CSR menggunakan CA sendiri.

Self-managed penandatanganan sertifikat 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 menandatangani CSR. Anda dapat menggunakan penandatanganan sertifikat yang dikelola sendiri untuk menandatangani CSR dengan CA yang dibuat oleh CA Pri AWS badi, 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

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

AWS IoT Core penyedia sertifikat untuk penyediaan armada
  • Ketika perangkat IoT baru diproduksi atau diperkenalkan ke armada, ia memerlukan sertifikat klien untuk mengotentikasi dirinya sendiri. AWS IoT Core

  • Sebagai bagian dari proses penyediaan armada, perangkat membuat permintaan AWS IoT Core untuk sertifikat klien melalui API MQTT penyedi aan armada. Permintaan ini mencakup permintaan penandatanganan sertifikat (CSR).

  • AWS IoT Core memanggil penyedia sertifikat dan meneruskan CSR sebagai input ke penyedia.

  • Penyedia sertifikat mengambil CSR sebagai input dan mengeluarkan sertifikat klien.

    Untuk penandatanganan sertifikat ter AWS IoT Core kel AWS ola, tandatangani CSR menggunakan CA sendiri dan mengeluarkan sertifikat klien.

  • Dengan sertifikat klien yang dikeluarkan, perangkat akan melanjutkan penyediaan armada dan membuat koneksi yang aman dengan AWS IoT Core.

Penyedia sertifikat Masukan fungsi Lambda

AWS IoT Core mengirimkan objek berikut ke fungsi Lambda ketika perangkat mendaftar dengannya. Nilai certificateSigningRequest adalah CSR dalam format Privacy-Enhanced Mail (PEM) yang disediakan dalam CreateCertificateFromCsr permintaan. Ini principalId adalah ID dari kepala sekolah yang digunakan untuk terhubung AWS IoT Core saat membuat CreateCertificateFromCsr permintaan. clientIdadalah ID klien yang ditetapkan untuk koneksi MQTT.

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

Penyedia sertifikat Nilai pengembalian fungsi lambda

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

{ "certificatePem": "string" }

Jika pendaftaran berhasil, CreateCertificateFromCsr akan mengembalikan yang sama certificatePem dalam tang CreateCertificateFromCsr gapan. Untuk informasi selengkapnya, lihat contoh payload respons dari CreateCertificateFromCsr.

Contoh fungsi Lambda

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 masukan CSR, menggunakan CA pribadi dan algoritma pen SHA256WITHRSA andatanganan. Sertifikat klien yang dikembalikan akan berlaku selama satu tahun. Untuk informasi selengkap AWS Private CA nya tentang dan cara membuat CA pribadi, lihat Apa itu CA AWS Pribadi? dan Membuat CA pribadi.

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 berada di Wilayah yang sama Akun AWS dengan sumber daya penyedia sertifikat.

  • Prinsi AWS IoT p layanan harus diberikan izin pemanggilan ke fungsi Lambda. Untuk menghindari masalah wakil yang memb ingungkan, kami sarankan Anda mengatur sourceArn dan sourceAccount untuk izin pemanggilan. Untuk informasi lebih lanjut, lihat pencegahan wakil yang Cross-service bingung.

Contoh kebijakan berbasis sumber daya berikut untuk Lambda memberikan izin untuk memang AWS IoT gil fungsi Lambda:

{ "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" } } } ] }

Self-managed penandatanganan sertifikat untuk penyediaan armada

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

Untuk memilih penandatanganan sertifikat yang dikelola sendiri, Anda harus membuat penyedia AWS IoT Core sertifikat untuk menandatangani CSR dalam 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 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 dari Refer AWS IoT ensi API.

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

  1. Pergi ke AWS IoT konsol.

  2. Di navigasi kiri, di bawah Keamanan, pilih Penandatanganan sertifikat.

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

  4. Pada halaman Edit metode penandatanganan sertifikat, di bawah Metode penandatanganan sertifikat, pilih Self-managed.

  5. Di bagian Self-managed pengaturan, masukkan nama untuk penyedia sertifikat, lalu buat atau pilih fungsi Lambda.

  6. Pilih Perbarui penandatanganan sertifikat.

AWS CLI perintah untuk penyedia sertifikat

Buat penyedia sertifikat

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 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 dari Refer AWS IoT ensi API.

Perbarui penyedia sertifikat

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 dari Refer AWS IoT ensi API.

Jelaskan penyedia sertifikat

Untuk menjelaskan 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 dari Refer AWS IoT ensi API.

Hapus penyedia sertifikat

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 dari Refer AWS IoT ensi API.

Daftar penyedia sertifikat

Untuk mencantumkan penyedia sertifikat 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 ListCertificateProvider dari Refer AWS IoT ensi API.