ในการรับส่งข้อมูลผ่านทาง http ปกตินั้นอาจจะไม่ปลอดภัยเท่าไรนัก เนื่องจากข้อมูลที่รับส่งไม่ได้ถูกเข้ารหัสเอาไว้ ถ้าหากว่ามีผู้มาดักจับข้อมูลของเราระหว่างทางที่รับส่งข้อมูลกันหละก็ข้อมูลลับของเราก็จะไม่ลับอีกต่อไป ทุกวันนี้บริการหลักๆอย่าง google, gmail, hotmail, facebook, twitter หรือเว็บไซต์อี-คอมเมิร์ซทั้งหลาย ก็หันมาให้ทำการเชื่อมต่อผ่านท่าง https กันหมดแล้ว ซึ่ง https จะเข้ารหัสข้อมูลทั้งหมดก่อนการรับส่ง ทำให้มั่นใจได้ว่าถึงแม้จะมีผู้พยายามดักจับข้อมูลของเราไปเขาก็จะไม่สามารถนำข้อมูลนั้นไปเปิดดูได้ บทความนี้จะเป็นบทต่อจากบทความที่แล้ว ขั้นตอนการติดตั้ง Apache Web Server และ PHP บน CentOS และ การทำ Virtual Host บน Apache Web Server ซึ่งในบทความนี้จะทำการสร้าง SSL แบบ self-signed certificate ซึ่งจริงๆแล้ว ถ้าจะนำไปใช้งานจริงเราต้องทำการซื้อใบรับรองจากผู้ให้บริการ CA (Certificate Authority) โดยปัจจุบันก็มีอยู่หลายรายเช่น VeriSign, Thawte , Comodo , Geotrust โดยค่าบริการใบรับรองก็จะคิดกันเป็นรายปี ประมาณปีละ 3,000 – 30,000 บาทกันเลยทีเดียว และเราก็ยังต้องมี 1 IP Address ต่อ 1 Certificate อีกต่างหาก แต่วันนี้เรายังไม่มีตังค์เราก็จะใช้แบบที่ไม่ต้องซื้อไปก่อน ^^
เริ่มด้วยการติดตั้ง OpenSSL , httpd, mod_ssl (ถ้าใครเคยติดตั้ง httpd ไปพร้อมกับบทความก่อนหน้านี้แล้วก็ไม่เป็นไรนะครับ สั่ง install ซ้ำไปอีกรอบก็ได้ ไม่เป็นไร เพราะสุดท้าย yum มันก็จะเช็คอีกรอบก่อนอยู่แล้วว่ามีติดตั้งไว้อยู่แล้วหรือยัง ถ้ามีอยู่แล้วมันก็จะไม่ทำการติดตั้งใหม่)
1 | # yum install httpd mod_ssl openssl |
เริ่มทำการสร้าง self-signed certificate
– สร้างไดเร็คทอรีไว้เก็บไฟล์ซะก่อน
1 2 | # mkdir /var/www/ssl-cert # cd /var/www/ssl-cert |
– Generate private key
1 | # openssl genrsa -out ca.key 2048 |
– Generate CSR
1 | # openssl req -new -key ca.key -out ca.csr |
โดยกรอกข้อมูลต่างๆดังนี้
Country Name : TH
State or Province : Bangkok
Locality : Chatujak
Organization Name : LookHin Inc.
Organizational Unit : IT
Common Name : vhost1.unzeen.com //ตรงนี้สำคัญมาก ให้ใส่ domain ที่เราต้องการใช้ https ลงไป
Email : [email protected]
ข้อมูลในส่วนของ extra attributes ให้กด enter ข้ามไปเลยครับ
– Generate Self Signed Key
1 | # openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt |
จากนั้นทำการแก้ไขไฟล์ /etc/httpd/conf/httpd.conf
1 | # nano /etc/httpd/conf/httpd.conf |
เพิ่ม NameVirtualHost *:443 เข้าไป โดยใส่ไว้ใต้ NameVirtualHost *:80 ก็จะดี จะได้อ่านง่ายๆ
1 2 | NameVirtualHost *:80 NameVirtualHost *:443 |
เพิ่ม VirtualHost ที่เราต้องการทำ https ลงไป
1 2 3 4 5 6 7 8 9 | <VirtualHost *:443> SSLEngine on SSLCertificateFile /var/www/ssl-cert/ca.crt SSLCertificateKeyFile /var/www/ssl-cert/private/ca.key ServerAdmin [email protected] DocumentRoot /var/www/vhost1 ServerName vhost1.unzeen.com </VirtualHost> |
ทำการ restart service httpd
1 | # service httpd restart |
เรียบร้อยครับ เปิดเว็บดูได้ https://vhost1.unzeen.com จะเห็นว่าพอเปิดขึ้นมาจะมี alert message ของ browser เตือนขึ้นมาว่าเว็บไซต์นี้ได้รับ certificate ที่ไม่ถูกต้อง นั้นก็เพราะว่าเรายังไม่ได้ทำการซื้อใบรับรองที่ถูกจากผู้ให้บริการนั้นเองนะครับ ให้กดยอมรับผ่านไปเลย แต่ถ้าเมื่อไรก็ตามที่เราได้ซื้อใบรับรองที่ถูกต้องมาแล้วข้อความที่ว่านี้ก็จะไม่ขึ้น