پرو ہوسٹر > بلاگ > انتظامیہ > DNS-01 چیلنج اور AWS کا استعمال کرتے ہوئے Let's Encrypt SSL سرٹیفکیٹ مینجمنٹ کی آٹومیشن
DNS-01 چیلنج اور AWS کا استعمال کرتے ہوئے Let's Encrypt SSL سرٹیفکیٹ مینجمنٹ کی آٹومیشن
پوسٹ میں SSL سرٹیفکیٹس کے انتظام کو خودکار کرنے کے اقدامات کی وضاحت کی گئی ہے۔ آئیے CA کو انکرپٹ کریں۔ استعمال کرتے ہوئے DNS-01 چیلنج и AWS.
acme-dns-route53 ایک ایسا آلہ ہے جو ہمیں اس خصوصیت کو نافذ کرنے کی اجازت دے گا۔ یہ Let's Encrypt سے SSL سرٹیفکیٹس کے ساتھ کام کر سکتا ہے، انہیں Amazon سرٹیفکیٹ مینیجر میں محفوظ کر سکتا ہے، DNS-53 چیلنج کو لاگو کرنے کے لیے Route01 API کا استعمال کر سکتا ہے، اور آخر میں SNS پر اطلاعات کو دھکیل سکتا ہے۔ میں acme-dns-route53 AWS Lambda کے اندر استعمال کے لیے بلٹ ان فعالیت بھی موجود ہے، اور ہمیں یہی ضرورت ہے۔
اس مضمون کو 4 حصوں میں تقسیم کیا گیا ہے:
زپ فائل بنانا؛
IAM کردار بنانا؛
ایک لیمبڈا فنکشن بنانا جو چلتا ہے۔ acme-dns-route53;
کلاؤڈ واچ ٹائمر بنانا جو دن میں 2 بار فنکشن کو متحرک کرتا ہے۔
نوٹ: شروع کرنے سے پہلے آپ کو انسٹال کرنے کی ضرورت ہے۔ GoLang 1.9+ и AWS CLI
زپ فائل بنانا
acme-dns-route53 GoLang میں لکھا گیا ہے اور 1.9 سے کم ورژن کو سپورٹ کرتا ہے۔
ہمیں بائنری کے ساتھ زپ فائل بنانے کی ضرورت ہے۔ acme-dns-route53 اندر ایسا کرنے کے لیے آپ کو انسٹال کرنا ہوگا۔ acme-dns-route53 کمانڈ کا استعمال کرتے ہوئے GitHub ذخیرہ سے go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
بائنری میں انسٹال ہے۔ $GOPATH/bin ڈائریکٹری براہ کرم نوٹ کریں کہ تنصیب کے دوران ہم نے دو تبدیل شدہ ماحول کی وضاحت کی: GOOS=linux и GOARCH=amd64. وہ گو کمپائلر پر واضح کرتے ہیں کہ اسے لینکس OS اور amd64 فن تعمیر کے لیے موزوں بائنری بنانے کی ضرورت ہے - یہ وہی ہے جو AWS پر چلتا ہے۔
AWS توقع کرتا ہے کہ ہمارا پروگرام زپ فائل میں لگایا جائے گا، تو آئیے تخلیق کرتے ہیں۔ acme-dns-route53.zip آرکائیو جس میں نئی انسٹال شدہ بائنری ہوگی:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
نوٹ: بائنری زپ آرکائیو کی جڑ میں ہونی چاہیے۔ اس کے لیے ہم استعمال کرتے ہیں۔ -j پرچم
اب ہمارا زپ عرفی نام تعیناتی کے لیے تیار ہے، بس ضروری حقوق کے ساتھ ایک کردار بنانا باقی ہے۔
ایک IAM کردار بنانا
ہمیں اپنے لیمبڈا کو اس کے نفاذ کے دوران درکار حقوق کے ساتھ ایک IAM کردار ترتیب دینے کی ضرورت ہے۔
آئیے اس پالیسی کو کہتے ہیں۔ lambda-acme-dns-route53-executor اور اسے فوری طور پر ایک بنیادی کردار دیں۔ AWSLambdaBasicExecutionRole. یہ ہمارے لیمبڈا کو چلانے اور AWS CloudWatch سروس پر لاگ لکھنے کی اجازت دے گا۔
سب سے پہلے، ہم ایک JSON فائل بناتے ہیں جو ہمارے حقوق کو بیان کرتی ہے۔ یہ بنیادی طور پر لیمبڈا سروسز کو اس کردار کو استعمال کرنے کی اجازت دے گا۔ lambda-acme-dns-route53-executor:
اب کمانڈ چلاتے ہیں۔ aws iam create-role کردار بنانے کے لیے:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
نوٹ: پالیسی ARN (ایمیزون ریسورس کا نام) یاد رکھیں - ہمیں اگلے مراحل میں اس کی ضرورت ہوگی۔
کردار lambda-acme-dns-route53-executor بنایا گیا، اب ہمیں اس کے لیے اجازتیں بتانے کی ضرورت ہے۔ ایسا کرنے کا سب سے آسان طریقہ کمانڈ استعمال کرنا ہے۔ aws iam attach-role-policy, پاسنگ پالیسی ARN AWSLambdaBasicExecutionRole مندرجہ ذیل
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
نوٹ: دوسری پالیسیوں کے ساتھ ایک فہرست مل سکتی ہے۔ یہاں.
ایک لیمبڈا فنکشن بنانا جو چلتا ہے۔ acme-dns-route53
ہورے! اب آپ کمانڈ کا استعمال کرتے ہوئے ہمارے فنکشن کو AWS میں تعینات کر سکتے ہیں۔ aws lambda create-function. لیمبڈا کو مندرجہ ذیل ماحولیاتی متغیرات کا استعمال کرتے ہوئے ترتیب دیا جانا چاہیے:
AWS_LAMBDA - یہ واضح کرتا ہے acme-dns-route53 کہ پھانسی AWS Lambda کے اندر ہوتی ہے۔