SSL NameVirtualHost
Thu 03 October 2013အလုပ်က Project အတော်များများက Server တွေက Dedicated တွေများတယ် အဲဒီတော့ Resource ပြဿနာတက်တာ နည်းတော့နည်းပါတယ် မနေ့ကမှ တိုက်တိုက်ဆိုင်ဆိုင် Porject တစ်ခုက ရှိပြီးသား Server တစ်ခုမှာပဲ Trial အတွက်ဆိုပြီး Web Server တစ်ခု Virtual Host လုပ်ပေးရတော့ SSL မပါတဲ့ HTTP အလုပ်လုပ်ပေမယ့် SSL ပါလာရင် အလုပ်မလုပ်ဘူး SSL ကို Enable လုပ်လိုက်တာနဲ့ Apache ကို Restart လုပ်တာနဲ့ အောက်ကလို Warning ပြနေရော။
Warning:
[warn] default VirtualHost overlap on port 443, the first has precedence
အဲဒီမှာ Overlap ဖြစ်တယ်ဆိုတော့ တခုခုကတော့မှားနေတယ် Virtual Host မှာ Port ထပ်တယ်မှမရှိတာ IP တခု Port တခုပေါ်မှာ Host အများကြီးသုံးလို့ရတာပဲ အဲဒါနဲ့ရွာလည်နေရော။ နောက်မှစဉ်းစားမိတာက Apache ရဲ့ Virtual Host မှာက IP-Based နဲ့ Name-Based နှစ်မျိုးရှိတာပဲ အဲဒီတော့ IP-Based ဖြစ်နေရင် Virtual Host နောက်တခုကသုံးရင် Port ထပ်တယ်ဖြစ်နိုင်တာပဲ။ ဒါပေမယ့် SSL မှာပဲ ဖြစ်နေတော့ စဉ်းစားရခက်တယ်။ အဲဒါနဲ့ Config တွေကို မွှေနှောက်ရတော့တယ် ဘယ်ဖိုင်ထဲမှန်း မသိပေမယ့် ရှာချင်တာ အတိအကျသိရင်မခက်ပါဘူး grep နဲ့ရှာရင်လွယ်ပါတယ်။
Grep:
grep -r "NameVirtualHost" /etc/apache2/
Output:
/etc/apache2/ports.conf:NameVirtualHost :80
/etc/apache2/ports.conf: # If you add NameVirtualHost :443 here, you will also have to change
ports.conf:
NameVirtualHost *:80
Listen 80
Listen 443
Listen 443
အဲဒီ့မှာ တရားခံတွေ့တယ် Default Config ထဲမှာ SSL အတွက် Port 443 အတွက်က NameVirtualHost လို့မပြောထားတဲ့အတွက် ပထမဆုံးရတဲ့ VirtualHost က IP-Based ဖြစ်သွားပြီးတော့ နောက်တစ်ခုမှာ Port က မအားတော့ဘူးဖြစ်နေတာ။ တကယ်ကတော့ Default ထည့်မပေးတာမှာလည်း ကိစ္စကတော့ရှိပါတယ် SSL မှာ NameVirtualHost တွေက Browser အဟောင်းတွေမှာ အထူးသဖြင့် IE အဟောင်းတွေမှာ အလုပ်မလုပ်ပါဘူး ဒါပေမယ့် မတတ်နိုင်ဘူးလေ Server မှအပိုမရှိတော့တာ အဲဒါနဲ့ NameVirtualHost ကို SSL အတွက် Enable လုပ်ရတယ်။ တနေရာထဲရှာရလွယ်အောင် ports.conf ထဲမှာပဲ ထပ်ထည့်လိုက်တယ်။
NameVirtualHost:
NameVirtualHost *:443
VirtualHost:
အဲဒါပြီးတော့ အစက Port 80 ကိုပဲ Listen လုပ်ထားတဲ့ VirtualHost မှာ Port 443 ကို Listen လုပ်ခိုင်းပြီးတော့ လိုအပ်တဲ့ Certificate တွေကို Point လုပ်ပေးလိုက်ရင်ရပါတယ်။ ဒီတစ်ခါတော့ Configuration ပြင်ပြီး Apache ကို Reload လုပ်လိုက်တော့ Error မရှိတော့ဘူး Browser ကနေပြီးတော့ စမ်းကြည့်တော့လည်း အလုပ်လုပ်သွားပါတယ်။။