วันเสาร์ที่ 17 มิถุนายน พ.ศ. 2560

เข้าสู่โหมดการเชื่อมต่อแบบปลอดภัย ssl อย่างถูกวิธี เพื่อการให้บริการเว็บไซต์ดูดี มีมาตรฐานที่เหนือชั้นกว่า

 

เข้าสู่โหมดการเชื่อมต่อแบบปลอดภัย ssl อย่างถูกวิธี เพื่อการให้บริการเวบไซต์ดูดี มีมาตรฐานที่เหนือชั้นกว่า 

บ่อยครั้งที่ผู้เขียนเปิดเวบไซต์ของตัวเองโดยใช้ google chrome บนพื้นที่ด้านบนตำแหน่งให้ป้อน url ขึ้นเครื่องหมายตกใจ !ไม่ปลอดภัย  หากเปิดด้วยมือถือเตือนหนัก การเชื่อมต่อกับเว็บไซต์นี้ไม่ปลอดภัย คุณไม่ควรป้อนข้อมูลที่ละเอียดอ่อนบนเว็บไซต์นี้(ตัวอย่างเช่น รหัสผ่านหรือบัตรเครดิต) เนื่องจากผู้โจมตีอาจขโมยข้อมูลดังกล่าวไปได้ แต่บางเวบไซต์ขึ้นสัญลักษณ์รูปกุญแจสีเขียวแล้วแสดงคำว่า ปลอดภัย

เอาละซิอยู่ดี ๆ มาวันหนึ่งเวบไซต์หลักที่สร้างรายได้ให้กับเรากลายมาเป็นเวบไซต์ปัญหาเจอคำเตือนว่าวันนี้จะไม่ปลอดภัย หรือไม่น่าไว้วางใจเสียซะแล้ว จึงเป็นจุดเริ่มต้นการปรับ เข้าสู่โหมดการเชื่อมต่อแบบปลอดภัย ssl อย่างถูกวิธี เพื่อการให้บริการเวบไซต์ดีดี มีมาตรฐานที่เหนือชั้นกว่า วันนี้ลองของจริงกับเว็บไซต์ gpsthai

สำหรับระบบโอเอสที่ผู้เขียนใช้เขียนบทความในวันที่ก็คือ Ubuntu 16.04.2 LTS  นั่นเอง เนื้อหาในวันนี้ค่อนข้างซับซ้อนพอสมควร มีความสัมพันธ์กันหลาย ๆ เรื่องแนะนำมือใหม่ว่าอย่าใจร้อนโดยเด็ดขาด

ขั้นตอนที่ 1 ให้สร้างคีย์ส่วนตัว(private key) สำหรับเป็นฐานสำหรับสร้างคีย์อื่น ๆ รวมถึงสร้างการร้องขอการใช้  Certification Request(csr) ไฟล์เพื่อใช้สำหรับร้องขอคีย์สาธารณะของเซิร์ฟเวอร์ รวมถึงคีย์สาธาระของผู้ให้บริการ CA

#openssl genrsa -des3 -out www_gpsthai_com.key 2048
#mv www_gpsthai_com.key www_gpsthai_com_secure.key
#openssl rsa -in www_gpsthai_com_secure.key -out www_gpsthai_com.key
#openssl req -new -key www_gpsthai_com.key -out www_gpsthai_com.csr


ในขั้นตอนที่มีคีย์อยู่ด้วยกัน 2 ไฟล์ที่สำคัญก็คือ www_gpsthai_com.key เป็นคีย์ส่วนตัวสำหรับเซิร์ฟเวอร์ และ www.gpsthai.com.csr เป็นคีย์สาธารณะสำหรับร้องขอเพื่อขอบริการ CA

ขั้นตอนที่ 2 หลังจากสร้างคีย์เพื่อทำการร้องขอได้เรียบร้อยแล้ว ผู้เขียนได้ทำการร้องขอไปยังผู้ให้บริการ CA ในที่นี้คือ Codomo ส่วนการสั่งซื้อก็เลือกเพียงแค่ Positive SSL หลังจากการร้องขอสมบูรณ์ผู้ให้บริการ CA จะส่งไฟล์คีย์สาธารณะของCA และไฟล์คีย์ของเซิร์ฟเวอร์มาให้ ตัวอย่างไฟล์ที่ผู้เขียนได้รับมาจาก Codomo

ดังนี้

AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt
www_gpsthai_com.crt
ไฟล์หลักสำหรับคีย์สาธาระของCA ก็คือ COMODORSADomainValidationSecureServerCA.crt ส่วนไฟล์คีย์สาธารณะสำหรับเซอร์เวอร์ ก็คือ www_gpsthai_com.crt นั่นเอง เราจะได้ใช้ค่าต่าง ๆ เหล่านี้สำหรับกำหนดค่าคอนฟิกให้กับโปรแกรม apache

ล่าสุดเมื่อวันที่ 13 เมษายน พ.ศ.2561 ผู้เขียนสร้างโหมดการเชื่อมต่อแบบปลอดภัยให้กับเวบไซต์ vanvip.net ปรากฏว่า COMODO สร้างไฟล์มาให้แค่ 2 ไฟล์คือ www_vanvip_net.crt และ www_vanvip_net.ca-bundle ก็ไม่ต้องตกใจ ตัวไฟล์ crt ใช้เหมือนเดิมคือในส่วนของ SSLCertificateFile ส่วนไฟล์ ca-bundle เอาไปแทน SSLCertificateChainFile

www_vanvip_net.crt
www_vanvip_net.ca-bundle


ขั้นตอนที่ 3 ความสลับซับซ้อนเริ่มเพิ่มมากขึ้นมาเรื่อย ๆ ครั้งนี้จะเป็นการจัดการเซิร์ฟเวอร์ให้สามารถเปิดให้บริการระบบ ssl ได้ ดูตำแหน่งของไฟล์ให้ถูกต้อง เพื่อให้การทำงานเป็นไปได้ด้วยความราบรื่น
 #mkdir /etc/apache2/ssl
 #a2enmod ssl
 #cp default-ssl.conf gpsthai-ssl.conf
<VirtualHost _default_:443>
                ServerAdmin webmaster@localhost
                ServerAlias www.gpsthai.com
                ServerName gpsthai.com
                DocumentRoot /var/www/gpsthai
                <Directory "/var/www/gpsthai">
                        Options Indexes FollowSymLinks
                        AllowOverride All
                </Directory>
        SSLCertificateFile      /etc/apache2/ssl/www_gpsthai_com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/www_gpsthai_com.key
        SSLCertificateChainFile /etc/apache2/ssl/COMODORSADomainValidationSecureServerCA.crt

ขั้นตอนที่ 4 เมื่อกำหนดค่าให้กับเซิร์ฟเวอร์เพื่อเปิดใช้บริการ ssl เรียบร้อยแล้ว ยังต้องสร้างไซต์ให้รองรับการสร้างเนื้อหาแบบ ssl สำหรับผู้เ่ขียนใช้งาน Joomla ต้องติดตั้งโปรแกรม php-curl เพิ่มเติม

#apt-get install php-curl
#a2ensite gpsthai-ssl
#service apache2 reload

ขั้นตอนที่ 5 เป็นการแก้ไขในส่วนของ htaccess ไฟล์เพื่อให้รีไดเรคเซอร์วิสจาก http ไปเป็น https โดยอัตโนมัติ

 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
#Also, you can also redirect based on port number, for example:
 RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

ขั้นตอนที่  6 ต้องสร้างไฟล์ sitemap.xml ขึ้นมาใหม่หมดเพราะเราเปลี่ยนจาก http ไปเป็น https โดยสมบูรณ์แล้ว สามารถกลับไปทบทวนวิธีการได้ที่ วิธีสร้างไซต์แม็บดี ๆ ไม่มีค่าใช้จ่าย 

สรุปเนื้อหาในวันนี้จะทำให้เราสามารถเข้าสู่โหมดการเชื่อมต่อแบบปลอดภัย ssl อย่างถูกวิธี เพื่อการให้บริการเว็บไซต์ดูดี มีมาตรฐานเหนือชั้นกว่า