หลายๆ เว็บไซต์ เช่น 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 ดูได้
ข้อมูลอ้างอิง