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
Dalam topik ini:
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.
-
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
sourceArndansourceAccountuntuk 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 \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn: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:
-
Pergi ke AWS IoT konsol
. -
Di navigasi kiri, di bawah Keamanan, pilih Penandatanganan sertifikat.
-
Pada halaman Penandatanganan sertifikat, di bawah Detail penandatanganan sertifikat, pilih Edit metode penandatanganan sertifikat.
-
Pada halaman Edit metode penandatanganan sertifikat, di bawah Metode penandatanganan sertifikat, pilih Self-managed.
-
Di bagian Self-managed pengaturan, masukkan nama untuk penyedia sertifikat, lalu buat atau pilih fungsi Lambda.
-
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 \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn: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 \ --certificateProviderNamemy-certificate-provider\ --lambdaFunctionArnarn: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 --certificateProviderNamemy-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 --certificateProviderNamemy-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.