Calm Hill My Random Thoughts

Certbot-Auto and Route53 Plugin

Let’s Encrypt ရဲ့ SSL ကို Ubuntu ပေါ်မှာ Cerbot နဲ့သုံးရတာ သာမန်အားဖြင့် အဆင်ပြေပါတယ်။ ဒါပေမယ့် Wildcard Certs တွေကို စပြီးတော့ Support လုပ်တဲ့အချိန်မှာ Certbot ရဲ့ PPA နဲ့လာတဲ့ Certbot version ဟာ Wildcard အတွက်သုံးလို့မရသေးလို့ စောင့်ချိန်မရလို့ဆိုပြီး Certbot-Auto ကိုသုံးထားတဲ့ Server တလုံးရှိတယ်။ Renew လုပ်စရာရှိတာ တပတ်တခါ Script နဲ့ Run နေတာ လအတော်ကြာပြီ ဘာမှပြဿနာမရှိဘူး။ ဒီနေ့မနက်မှ Domain တခုရဲ့ Certificate တခုဟာ Expire ဖြစ်တော့မယ်ဆိုပြီး Email ဝင်လာလို့ ဘယ်သူမှမထိတဲ့ Server ဟာ ဘယ်လိုများ မှားစရာရှိလဲလို့ Server ထဲဝင်ကြည့်ရတယ်။

Renewal configuration file /etc/letsencrypt/renewal/mydomain.com.conf (cert: mydomain.com) produced an unexpected error: 'Namespace' object has no attribute 'dns_route53_propagation_seconds'. Skipping.

Logs တွေထဲမှာ Renew မှာ ဘာတွေဖြစ်လဲလို့ ဝင်ကြည့်တော့ dns_route53_propagation_seconds ဆိုတဲ့ Attribute မရှိပါဘူးဆိုတဲ့ Error နဲ့တွေ့ရတယ်။ အရင်လည်း အလုပ်လုပ်နေတာ Route53 Plugin မရှိတာတော့ မဖြစ်နိုင်ဘူးဆိုပြီး Plugin Installation တွေကို ပြန်စစ်ရပြန်တယ်။ Certbot ရဲ့ Plugins တွေကလည်း Python Version အလိုက် ၂ မျိုးကွဲနေသလို Package Manager အပေါ်မူတည်ပြီးလည်း pip နဲ့ Install လုပ်ရတာရှိတယ် နောက်တော့ apt မှာပါလာတဲ့ Package တွေလည်းရှိတယ်။ စစ်ဆေးကြည့်တော့လည်း Plugin တွေက Install လုပ်ထားဆိုတော့ နည်းနည်းတော့ စဉ်းစားရခက်တယ်။

Certbot-Auto ရဲ့ ပြဿနာဖြစ်မယ်ဆိုပြီး Certbot-Auto ကိုသွားကြည့်တော့ Last Updated Date က စက်တင်ဘာ ၄ ရက်ဆိုတော့ သူ့ဟာသူ Auto upgrade ဖြစ်သွားမှန်းသိလိုက်တယ်။ Certbot-Auto ရဲ့ တကယ့် Installation က /opt/eff.org/certbot မှာမွှေကြည့်တော့ Directory Structure အရဆိုရင် Virtualenv လို့ သတိထားမိတယ်။ Python packages တွေရှိရမယ့် /opt/eff.org/certbot/venv/lib/python2.7/site-packages/ အောက်မှာ Certbot Nginx Plugin ပဲတွေ့တယ် Route53 တော့ Install လုပ်ထားတာမတွေ့ဘူး။

Virtualenv ဖြစ်မှန်းသိတဲ့နောက်တော့ ကိုယ့်အတွက်က အခက်အခဲမရှိဘူး Virtualenv ကို activate လုပ်ပြီးတော့ Route53 Plugin ကို Install လုပ်လိုက်တော့ အဆင်ပြေသွားတယ်။ တခုပဲခက်တာက Directory တခုလုံးက Owner က root ဖြစ်နေတော့ User ကို root အနေနဲ့ပြောင်းပြီး Virtualenv ကို activate လုပ်ပြီး pip နဲ့ Install လုပ်တာက ပိုပြီးအဆင်ပြေလိမ့်မယ်။

sudo su
source /opt/eff.org/certbot/venv/bin/activate
pip install certbot-dns-route53
deactivate

စဉ်းစားလို့ရသလောက်က Certbot-auto အရင် version တွေမှာ Virtualenv ရဲ့ --system-site-packages ကို Enable လုပ်ထားပြီးတော့ အခု Upgrade မှာမပါလာလို့ပဲ System level install လုပ်ထားတဲ့ Plugin ကို မသိတော့တာဖြစ်မလား Bug လားတခုခုပဲ ဖြစ်ပါလိမ့်မယ်။ သူတို့ Upgrade လုပ်တိုင်း ကိုယ်ပြဿနာတက်ရင်လည်း အဆင်မပြေဘူးဆိုပြီး Auto Upgrade ကို ဘယ်လိုပိတ်လို့ရလဲ လိုက်ရှာတော့ --no-self-upgrade ဆိုတဲ့ Option ကို တွေ့တာနဲ့ Renew လုပ်တဲ့ Script တွေမှာ ထည့်ထားလိုက်တော့တယ်။