Openssl setup for Apache ( httpd)

Rpm base ( Enterprise Linux ) များရဲ့ Apache web service ပေါ်တွင် self-signed SSL certificate ကို အသုံးပြု၍ HTTPS ဖွင့်ရန် အောက်ပါအဆင့်များကို တဆင်းခြင်း ပြုလုပ်နိုင်ပါတယ်။ Self-signed certificate သည် browser တွင် security warning ပြမည်ဖြစ်သော်လည်း local testing အတွက် သင့်လျော်ပါသည်။

လုပ်ဆောင် ရမည့် အဆင့်များ –

ဒီနေရာမှာ Web Service နဲ့ ပါတ်သတ်တဲ့ httpd package တွေ install တာတွေ service active ဖြစ်တဲ့ အခြေအနေတွေကျော်ထားပါတယ်။

1. Self-Signed Certificate ဖန်တီးခြင်း

openssl ကို အသုံးပြု၍ self-signed certificate နှင့် private key ဖန်တီးပါ။

sudo mkdir -p /etc/pki/tls/certs /etc/pki/tls/private
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/pki/tls/private/selfsigned.key \
  -out /etc/pki/tls/certs/selfsigned.crt
  • ရှင်းလင်းချက်:
  • -x509: Self-signed certificate ဖန်တီးရန်။
  • -nodes: Private key ကို password မလိုအပ်အောင် ဖန်တီးရန်။
  • -days 365: Certificate သက်တမ်း ၁ နှစ်။
  • -newkey rsa:2048: 2048-bit RSA key ဖန်တီးရန်။
  • -keyout: Private key သိမ်းမည့်နေရာ။
  • -out: Certificate သိမ်းမည့်နေရာ။

အဆင့်လုပ်ဆောင်နေစဉ် အောက်ပါမေးခွန်းများကို ဖြည့်စွမ်းရန် လိုအပ်ပါလိမ့်မည် (ဥပမာ):

  • Country Name: MM
  • State or Province: Yangon
  • Organization Name: YourOrg
  • Common Name (CN): bnntechlinux.local သို့မဟုတ် server IP (ဥပမာ: 192.168.122.200)

2. Apache တွင် SSL Module ဖွင့်ခြင်း

Apache တွင် SSL အသုံးပြုရန် mod_ssl module ဖွင့်ထားရန် လိုအပ်သည်။

sudo dnf install mod_ssl

3. Apache Configuration ပြင်ဆင်ခြင်း

Apache configuration ဖိုင်တစ်ခုကို ဖန်တီးပြီး self-signed certificate ကို ထည့်သွင်းရန် အောက်ပါအဆင့်များကို လုပ်ဆောင်ပါ။

  1. Virtual Host ဖိုင်ဖန်တီးခြင်း:
    /etc/httpd/conf.d/ssl.conf ဖိုင်ကို edit လုပ်ရပါမယ် ဒါမှမဟုတ် သီးသန့် configuration ဖိုင်တစ်ခု (ဥပမာ: /etc/httpd/conf.d/bnntechlinux-ssl.conf) ကို အသုံးပြုနိုင်ပါတယ်။
  2. root user ကို အသုံးမပြုထားရင် sudo ခံ သုံးပါ။
   #vim /etc/httpd/conf.d/ssl.conf
  1. Virtual Host Configuration ထည့်သွင်းခြင်း:
    အောက်ပါ configuration ကို ထည့်သွင်းပါ။ bnntechlinux.local ကို သင့် domain သို့မဟုတ် server IP( 192.168.122.200 ) ဖြင့် အစားထိုးနိုင်ပါတယ်။
  2. ဒီနေရာမှာ မူရင်းဖိုင်ထဲက ရှိပြီးသား Content တွေကို ရှာကာ အစားထိုးခြင်း # ကို ဖြုတ်ခြင်းများ ပြုလုပ်ရမှာဖြစ်ပါတယ်။
   <VirtualHost *:443>
       ServerName bnntechlinux.local
       DocumentRoot /var/www/html
       SSLEngine on
       SSLCertificateFile /etc/pki/tls/certs/selfsigned.crt
       SSLCertificateKeyFile /etc/pki/tls/private/selfsigned.key
       <Directory /var/www/html>
           AllowOverride All
           Require all granted
       </Directory>
   </VirtualHost>
  • ရှင်းလင်းချက်:
    • ServerName: သင့် domain သို့မဟုတ် IP။
    • DocumentRoot: Website ဖိုင်များ သိမ်းထားသည့်နေရာ ။
    • SSLEngine on: SSL ဖွင့်ရန်။
    • SSLCertificateFile: Certificate ဖိုင်လမ်းကြောင်း။
    • SSLCertificateKeyFile: Private key ဖိုင်လမ်းကြောင်း။
  1. Configuration စစ်ဆေးခြင်း:
    Configuration တွင် syntax error မရှိကြောင်း စစ်ဆေးပါ။
   sudo apachectl configtest

Output တွင် Syntax OK ပြပါက ဆက်လက်လုပ်ဆောင်နိုင်သည်။

4. Firewall

Port 443 (HTTPS) ဖွင့်ထားကြောင်း သေချာပါစေ။

sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

5. Apache ပြန်လည်စတင်ခြင်း

Apache ဝန်ဆောင်မှုကို restart လုပ်ပါ။

sudo systemctl restart httpd

6. HTTP ကို HTTPS သို့ Redirect လုပ်ခြင်း (Optional)

HTTP မှ HTTPS သို့ redirect လုပ်လိုပါက /etc/httpd/conf.d/bnntechlinuxsite.conf ဖိုင်တွင် အောက်ပါ configuration ထည့်ပါ။

ဆိုလိုချင်တာက – client က browser ရဲ့ search မှာ servername ဒါမှမဟုတ် server ip ထည့်ရိုက်လိုက်တာနဲ့ https နဲ့ အလုပ်လုပ်ဖို့ပါ။ထွေထူး http:// တို့ https:// တို့ ထည့်စရာမလိုပါ။

<VirtualHost *:80>
    ServerName bnntechlinux.local
    Redirect permanent / https://bnntechlinux.local/
</VirtualHost>

ထို့နောက် Apache ကို ထပ်မံ restart လုပ်ပါ။

sudo systemctl restart httpd

7. Website စမ်းသပ်ခြင်း

  • Browser တွင် https://bnntechlinux.local သို့မဟုတ် https://192.168.122.200 ဖြင့် ဝင်ရောက်ကြည့်ပါ။
  • Browser တွင် “Your connection is not private” သတိပေးချက်ပေါ်လာပါက “Proceed” သို့မဟုတ် “Advanced > Proceed” ကို နှိပ်ပါ။ ဤသတိပေးချက်သည် self-signed certificate အသုံးပြုထားသောကြောင့် ပေါ်ပေါက်ခြင်းဖြစ်သည်။

မှတ်ချက်

  • Browser Warning: Self-signed certificate သည် production အတွက် မသင့်လျော်ပါ။ Production တွင် Let’s Encrypt သို့မဟုတ် အခြား CA မှ SSL certificate ကို အသုံးပြုရန် အကြံပြုပါသည်။
  • File Permissions: Certificate နှင့် key ဖိုင်များသည် Apache user (apache) ဖြင့် ဖတ်နိုင်ရမည်။ လိုအပ်ပါက permissions ပြင်ဆင်နိုင်ပါတယ်။
sudo chown apache:apache /etc/pki/tls/certs/selfsigned.crt /etc/pki/tls/private/selfsigned.key
sudo chmod 600 /etc/pki/tls/private/selfsigned.key

အဆင်ပြေကြပါစေ။

Linux basic to Linux system administration ကို လေ့လာလိုသူတိုင်းအတွက် Linux အခြေခံ ရှိစရာမလိုပဲ သင်လို့ရနိုင်မည့် သင်တန်းကို လေ့လာနိုင်ရန်။

စုံစမ်းရန် ဒီမှာ နှိပ်ပါ။

Leave a comment