ProHoster > Blog > Pentadbiran > Automasi pengurusan sijil SSL Let's Encrypt menggunakan cabaran DNS-01 dan AWS
Automasi pengurusan sijil SSL Let's Encrypt menggunakan cabaran DNS-01 dan AWS
Siaran itu menerangkan langkah-langkah untuk mengautomasikan pengurusan sijil SSL daripada Mari Sulitkan CA menggunakan Cabaran DNS-01 ΠΈ AWS.
acme-dns-route53 ialah alat yang membolehkan kami melaksanakan ciri ini. Ia boleh berfungsi dengan sijil SSL daripada Let's Encrypt, menyimpannya dalam Pengurus Sijil Amazon, menggunakan API Route53 untuk melaksanakan cabaran DNS-01 dan, akhirnya, pemberitahuan tolak kepada SNS. DALAM acme-dns-route53 Terdapat juga fungsi terbina dalam untuk digunakan di dalam AWS Lambda, dan inilah yang kami perlukan.
Artikel ini dibahagikan kepada 4 bahagian:
mencipta fail zip;
mewujudkan peranan IAM;
mencipta fungsi lambda yang berjalan acme-dns-route53;
mencipta pemasa CloudWatch yang mencetuskan fungsi 2 kali sehari;
acme-dns-route53 ditulis dalam GoLang dan menyokong versi tidak lebih rendah daripada 1.9.
Kita perlu mencipta fail zip dengan binari acme-dns-route53 dalam. Untuk melakukan ini, anda perlu memasang acme-dns-route53 dari repositori GitHub menggunakan arahan go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binari dipasang di $GOPATH/bin direktori. Sila ambil perhatian bahawa semasa pemasangan kami menetapkan dua persekitaran yang diubah: GOOS=linux ΠΈ GOARCH=amd64. Mereka menjelaskan kepada pengkompil Go bahawa ia perlu mencipta binari yang sesuai untuk OS Linux dan seni bina amd64 - inilah yang berjalan pada AWS.
AWS menjangkakan program kami akan digunakan dalam fail zip, jadi mari buat acme-dns-route53.zip arkib yang akan mengandungi binari yang baru dipasang:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Catatan: Binari harus berada dalam akar arkib zip. Untuk ini kami gunakan -j bendera.
Sekarang nama panggilan zip kami sedia untuk digunakan, yang tinggal hanyalah mencipta peranan dengan hak yang diperlukan.
Mencipta peranan IAM
Kami perlu menyediakan peranan IAM dengan hak yang diperlukan oleh lambda kami semasa pelaksanaannya.
Mari kita panggil dasar ini lambda-acme-dns-route53-executor dan segera berikan dia peranan asas AWSLambdaBasicExecutionRole. Ini akan membolehkan lambda kami menjalankan dan menulis log ke perkhidmatan AWS CloudWatch.
Pertama, kami mencipta fail JSON yang menerangkan hak kami. Ini pada asasnya akan membolehkan perkhidmatan lambda menggunakan peranan tersebut lambda-acme-dns-route53-executor:
Sekarang mari kita jalankan arahan aws iam create-role untuk mencipta peranan:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Catatan: ingat dasar ARN (Nama Sumber Amazon) - kami akan memerlukannya dalam langkah seterusnya.
Peranan lambda-acme-dns-route53-executor dicipta, kini kita perlu menentukan kebenaran untuknya. Cara paling mudah untuk melakukan ini adalah dengan menggunakan arahan aws iam attach-role-policy, lulus dasar ARN AWSLambdaBasicExecutionRole seperti berikut:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Catatan: senarai dengan dasar lain boleh didapati di sini.
Mencipta fungsi lambda yang berjalan acme-dns-route53
Hooray! Kini anda boleh menggunakan fungsi kami ke AWS menggunakan arahan aws lambda create-function. Lambda mesti dikonfigurasikan menggunakan pembolehubah persekitaran berikut:
AWS_LAMBDA - menjadikannya jelas acme-dns-route53 pelaksanaan itu berlaku di dalam AWS Lambda.
DOMAINS β senarai domain yang dipisahkan dengan koma.