วันอังคารที่ 19 กุมภาพันธ์ พ.ศ. 2556

การติดตั้งและใช้งาน SSL (HTTPS) บน CentOS

HTTPS เป็นการเรียกใช้งาน Web Application แบบโหมด Security โดยใช้ Secure Socket Layer (SSL) encrypt และ decrypt ข้อมูลที่ส่งเมื่อมี Client เรียกใช้งาน (HTTPS ใช้พอร์ต 443 แทนที่ HTTP พอร์ต 80 ซึ่งถ้าเราใช้ port 443 ในการเรียกใช้งานเว็บโปรเจ็คของเรา เราก็จะใช้พอต 80 ทำอย่างอื่นได้ แต่แนะนำให้ทำ Alias บน https ไปด้วยกันดีกว่า)

      โดยปกติการทำ การสร้าง SSL จะต้องลงทะเบียนเสียเงินให้กับพวก CA ต่างๆ แต่อันนี้เป็นการติดตั้งแบบไม่ไม่เสียเงิน คุณภาพอาจอยู่แค่ปานกลาง



ติดตั้ง OpenSSL , mod_ssl
#yum install httpd mod_ssl openssl

ทำการสร้างDirectory ที่จะบรรจุไฟล์ cerf ต่างๆก่อน อาจะเก็บไว้ที่อื่นก็ได้ตามความพอใจ
#mkdir /var/www/ssl-cert
#cd /var/www/ssl-cert              // Move เข้าไปใน Dir ที่สร้างไว้

- Generate private key โดยพิมพ์คำสั่งด้านล่าง
# openssl genrsa -out ca.key 2048

- Generate CSR โดยพิมพ์คำสั่งด้านล่าง
# openssl req -new -key ca.key -out ca.csr

พิมพ์รายละเอียดต่างๆเข้าไปดังนี้
* ข้อมูลในส่วนของ extra attributes ให้กด enter ข้ามไปไม่ต้องใส่

    เมื่อกรอกเสร็จแล้วGenerate Self Signed Key โดยใช้คำสั่ง 
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

   หลังจากนั้นทำการแก้ไขไฟล์ /etc/httpd/conf/httpd.conf ซึ่งเป็นไฟล์คอนฟิกของ Apache  เปิดไฟล์ /etc/httpd/conf/httpd.conf ด้วย Text editor ที่ถนัด ผมถนัด vi vim


   หลังจากนี้จะเป็นการแก้ไขไฟล์คอนฟิกของ Apache ต้องใช้ความระมัดระวังในการทำ เพราะว่าถ้าเกิดข้อผิดพลาดจะไม่สามารถใช้งาน httpd ซึ่งเป็น service ของ apache ได้

   - ในไฟล์ httpd.conf

@ เพิ่ม NameVirtualHost *:443 เข้าไปดังภาพ
@ ในกรอบสีแดง ให้ใส่ path ของ Directory ที่เราสร้างไว้เมื่อขั้นตอนข้างตนลงไปแล้ว
@ ตรงส่วนที่เหลือเป็นการเซ้ตค่าทั่วไปของ Apache ก็แล้วแต่การใช้งานของแต่ละคน แต่ในตัวอย่างเป็นการ เซ็ตเพื่อใช้งานกับ mod_wsgi ของ django
@ ในกรอบสีเขียว เป็นการทำ Alias เพื่อให้ใช้งานในโหมด HTTPS

ออกจากไฟล์ httpd.conf แล้วสั่งรีสตาร์ท apache ด้วยคำสั่ง
# service httpd restart

    ถ้าคอนฟิกทุกส่วนถูกต้อง apache จะไม่ฟ้อง error ออกมาแต่ถ้าฟ้อง error ก็ดูว่า error ตรงบรรทัดไหนแล้วกลับไปแก้ไขตรงบรรทัดนั้น


  ลองทดสอบเปิดเว็บดูได้ https:/202.44.38.19 จะเห็นว่าพอเปิดขึ้นมาจะมี alert message ของ browser เตือนขึ้นมาว่าเว็บไซต์นี้ได้รับ certificate ที่ไม่ถูกต้อง


 ให้กดยอมรับผ่านไปเลย นั้นก็เพราะว่าเรายังไม่ได้ทำการซื้อใบรับรองที่ถูกจากผู้ให้บริการนั้นเอง


ถ้ามีการโหลดไฟล์ขนาดใหญ่ๆ หรือการ Query ข้อมูลเยอะๆลองสังเกตดีๆ ว่ามันจะช้าๆกว่าการเรียกแบบธรรมดา หรือป่าว?

ไม่มีความคิดเห็น:

แสดงความคิดเห็น