ติดตั้ง Apache SSL Web Server

หลายๆ เว็บไซต์ เช่น facebook เริ่มเปลี่ยนการเข้าเว็บจาก http มาเป็น https ทั้งเว็บไซต์ ด้วยเหตุผลเรื่องความปลอดภัย เพื่อเข้ารหัสข้อมูล (encryption) ป้องกันการดักจับข้อมูลส่วนตัว รหัสผ่าน รูปภาพ ข้อความ หรือข้อมูลอื่นๆ


ในบทความนี้ขอนำเสนอวิธีการติดตั้ง https หรือ SSL แบบง่ายๆ โดยใช้ Apache Web Server และ mod_ssl  ทดสอบบน Fedora 16 (x86_64)

ติดตั้งไฟล์ rpm จากแผ่นดีวีดีติดตั้ง

[root@fc16-64 Packages]# rpm -i apr-util-ldap-1.3.12-1.fc16.x86_64.rpm
[root@fc16-64 Packages]# rpm -i httpd-tools-2.2.21-1.fc16.x86_64.rpm
[root@fc16-64 Packages]# rpm -i httpd-2.2.21-1.fc16.x86_64.rpm
[root@fc16-64 Packages]# rpm -i mod_ssl-2.2.21-1.fc16.x86_64.rpm

ใช้คำสั่ง service เพื่อสตาร์ตเซอร์วิส apache

[root@fc16-64base ~]# service httpd start
Starting httpd (via systemctl):                  [  OK  ]

ใช้คำสั่ง ps เพื่อดูโปรเซสของ apache ที่รัน

[root@fc16-64 ~]# ps -ef | grep apache
apache    5225  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5226  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5227  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5228  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5229  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5230  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5231  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start
apache    5232  5164  0 16:11 ?        00:00:00 /usr/sbin/httpd -k start

ใช้คำสั่ง netstat -an เพื่อดูพอร์ตที่เปิด จะมีทั้ง http พอร์ต 80 และ https พอร์ต 443

[root@fc16-64base ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
...
tcp        0      0 :::443                      :::*                        LISTEN
tcp        0      0 :::80                       :::*                        LISTEN
...

เพื่อสะดวกต่อการทดสอบ ในที่นี้จะปิดทั้ง firewall และ selinux

[root@fc16-64 ~]# service iptables stop
Redirecting to /bin/systemctl  stop iptables.service

[root@fc16-64 ~]# setenforce 0

 

self-signed SSL Certificate

จากการติดตั้ง mod_ssl จะมีการสร้าง SSL Certificate สำหรับการทดสอบขึ้นมา โดยเป็นการสร้างแบบ self-signed ด้วยคำสั่ง openssl

SSL Certificate นี้สามารถใช้เข้ารหัสข้อมูล (encryption) เว็บไซต์ ได้จริง เพียงแต่ว่า Browser ที่ใช้เปิด ไม่ว่าจะเป็น IE, Firefox หรือ Chrome ไม่สามารถตรวจสอบ (verify) ผู้ออก Certificate ได้ ทำให้ขึ้นหน้าเตือนขึ้นมา

หลังจากทดสอบเรียบร้่อยแล้ว หากต้องการเปิดเว็บไซต์  https สำหรับผู้ใช้ทั่วๆ ไป  โดยที่ browser จะไม่มีการเตือนว่า Certificate ไม่ถูกต้อง ต้องจ่ายเงินซื้อ Certificate มาจากผู้ออกเช่น Verisign, Thawte

ทดลองใช้ Firefox Browser เข้า web site แบบ https

 

 

ในที่นี้ต้องกดปุ่ม [Add Exception] เพื่อยืนยันว่า เราต้องการเข้าเว็บไซต์นี้จริง

 

กดปุ่ม [Confirm Security Exception]

 

ข้อมูล Certificate ที่ self-signed เอง

 

 

แม้จะเป็น self-signed แต่การเข้าเว็บไซต์ https นี้ ก็มีการเข้ารหัสจริงๆ อาจทดลองเอาโปรแกรมประเภท wireshark จับ traffic ดูได้

 

 

ข้อมูลอ้างอิง

 

Leave a Reply

Your email address will not be published.