ProHoster > Blog > yönetim > DNS-01 sorgulaması ve AWS kullanılarak Let's Encrypt SSL sertifika yönetiminin otomasyonu
DNS-01 sorgulaması ve AWS kullanılarak Let's Encrypt SSL sertifika yönetiminin otomasyonu
Gönderide, SSL sertifikalarının yönetimini otomatikleştirmeye yönelik adımlar açıklanmaktadır. CA'yı Şifreleyelim kullanma DNS-01 mücadelesi и AWS.
acme-dns-rota53 bu özelliği uygulamamıza olanak sağlayacak bir araçtır. Let's Encrypt'in SSL sertifikalarıyla çalışabilir, bunları Amazon Sertifika Yöneticisi'ne kaydedebilir, DNS-53 mücadelesini uygulamak için Route01 API'yi kullanabilir ve son olarak bildirimleri SNS'ye iletebilir. İÇİNDE acme-dns-rota53 AWS Lambda'nın içinde kullanıma yönelik yerleşik işlevsellik de mevcuttur ve ihtiyacımız olan şey de budur.
Bu makale 4 bölüme ayrılmıştır:
bir zip dosyası oluşturmak;
bir IAM rolü oluşturma;
çalışan bir lambda işlevi oluşturma acme-dns-rota53;
bir işlevi günde 2 kez tetikleyen bir CloudWatch zamanlayıcısı oluşturmak;
acme-dns-route53, GoLang'da yazılmıştır ve 1.9'dan düşük olmayan sürümü destekler.
İkili bir zip dosyası oluşturmamız gerekiyor acme-dns-route53 içeri. Bunu yapmak için yüklemeniz gerekir acme-dns-route53 komutunu kullanarak GitHub deposundan go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
İkili dosya yüklü $GOPATH/bin dizin. Kurulum sırasında iki değiştirilmiş ortam belirttiğimizi lütfen unutmayın: GOOS=linux и GOARCH=amd64. Go derleyicisine Linux işletim sistemi ve amd64 mimarisine uygun bir ikili dosya oluşturması gerektiğini açıkça belirtiyorlar; AWS'de çalışan şey bu.
AWS, programımızın bir zip dosyasında dağıtılmasını bekliyor; o halde hadi şunu oluşturalım: acme-dns-route53.zip yeni kurulan ikili dosyayı içerecek arşiv:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Not: İkili dosya zip arşivinin kökünde olmalıdır. Bunun için kullanıyoruz -j bayrak.
Artık zip takma adımız dağıtıma hazır, geriye kalan tek şey gerekli haklara sahip bir rol oluşturmak.
IAM rolü oluşturma
Yürütülmesi sırasında lambdamızın gerektirdiği haklara sahip bir IAM rolü kurmamız gerekiyor.
Bu politikaya diyelim lambda-acme-dns-route53-executor ve hemen ona temel bir rol verin AWSLambdaBasicExecutionRole. Bu, lambda'mızın AWS CloudWatch hizmetine günlük yazmasına ve çalıştırmasına olanak tanıyacaktır.
Öncelikle haklarımızı anlatan bir JSON dosyası oluşturuyoruz. Bu aslında lambda hizmetlerinin bu rolü kullanmasına izin verecektir. lambda-acme-dns-route53-executor:
Şimdi komutu çalıştıralım aws iam create-role bir rol oluşturmak için:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Not: ARN (Amazon Kaynak Adı) politikasını unutmayın; sonraki adımlarda buna ihtiyacımız olacak.
Rol lambda-acme-dns-route53-executor oluşturuldu, şimdi bunun için izinleri belirtmemiz gerekiyor. Bunu yapmanın en kolay yolu komutu kullanmaktır. aws iam attach-role-policy, geçiş politikası ARN AWSLambdaBasicExecutionRole следующим обрахом:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Not: diğer politikaların yer aldığı bir liste bulunabilir burada.
Çalışan bir lambda işlevi oluşturma acme-dns-rota53
Yaşasın! Artık şu komutu kullanarak fonksiyonumuzu AWS'ye dağıtabilirsiniz: aws lambda create-function. Lambda aşağıdaki ortam değişkenleri kullanılarak yapılandırılmalıdır:
AWS_LAMBDA - açıkça ortaya koyuyor acme-dns-rota53 bu yürütme AWS Lambda'nın içinde gerçekleşir.
DOMAINS — virgülle ayrılmış alan adlarının listesi.