ขั้นแรกติดตั้ง Ubuntu 18.04.1 LTS กันถ้าใครไม่รู้วิธีก็คลิกที่นี่
ขั้นต่อไปก็ตามข้างล่างเลยครับ
sudo apt-get install apache2 openssl -y Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 ssl-cert Suggested packages: www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 ssl-cert 0 upgraded, 10 newly installed, 0 to remove and 1 not upgraded. Need to get 1,730 kB of archives. ...
เสร็จแล้วเราจะมาเริ่มกันที่การสร้าง certificate file ก่อนนะครับให้พิมพ์
$ sudo openssl genrsa –out server.key 1024 Generating RSA private key, 1024 bit long modulus .........++++++ ...............++++++ e is 65537 (0x010001) ...
หลังจากได้ไฟล์ server.key มาแล้วเราจะทำการร้องขอ certificate request โดยพิมพ์
$ sudo openssl req -config /etc/ssl/openssl.cnf -new -key server.key -out newcsr.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:TH (ประเทศไทย) State or Province Name (full name) [Some-State]: ไทยไม่มีปล่อยว่างครับ Locality Name (eg, city) []:Bangkok ใส่จังหวัดครับ Organization Name (eg, company) [Internet Widgits Pty Ltd]:ใส่ชื่อหน่วยงาน หรือองค์กรลงไป Organizational Unit Name (eg, section) []:IT-Security ใส่แผนกครับ Common Name (e.g. server FQDN or YOUR name) []:webserver อันนี้สำคัญที่สุดใส่ชื่อของเซิฟเวอร์ที่เราจะใช้ลงไปครับ Email Address []:ใส่อีเมลลงไปครับ Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:รหัสผ่านครับ An optional company name []:อาจจะใส่ตัวย่อของหน่วยงาน หรือองค์กรก็ได้ครับ ...
จากนั้นเราจะสร้าง Certificate file ขึ้นมาแล้วเซฟ output เป็น server.crt นะครับ
$ sudo openssl x509 -req -days 365 -in newcsr.csr -signkey server.key -out server.crt Signature ok subject=C = TH, ST = Bangkok, O = X-Force_Thailand, OU = IT-Security, CN = webserver Getting Private key ...
เสร็จแล้วให้เราทำการ config ไฟล์สำหรับเว็บไซต์ของเรานะครับ
$ sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/ชื่อเว็บไซต์.conf ตัวอย่าง $ sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/phaonix.conf จากนั้นเข้าไปแก้ไขไฟล์โดยเปิดผ่าน vim หรือ nano ตามแต่สะดวกเลยครับ แล้วแก้บรรทัดตามข้อมูลด้านล่างครับ บรรทัดไหนมีอยู่แล้วก็แก้ไข บรรทัดไหนไม่มีก็เพิ่มเข้าไปซะ $ sudo vim /etc/apache2/site-available/phaonix.conf 12 NameVirtualHost *:443 << บรรทัดนี้ต้องเพิ่มครับ 3 << บรรทัดนี้ต้องแก้ครับ 4 ServerAdmin webmaster@localhost 5 6 DocumentRoot /var/www/html << บรรทัดนี้ต้องแก้ครับ ใส่ที่อยู่ของ path ของ website ของเราลงไปครับ 7 26 SSLEngine on 27 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL << บรรทัดนี้ต้องเพิ่มครับ 34 SSLCertificateFile /etc/apache2/server.crt << ที่ ๆ เก็บไฟล์ .crt ครับ 35 SSLCertificateKeyFile /etc/apache2/server.key << ที่ ๆ เก็บไฟล์ .key ครับ
เสร็จแล้วให้ดำเนินการสร้าง Sym link ของไฟล์ดังกล่าวไปไว้ที่ /etc/apache2/site-enabled/
$ sudo ln -s /etc/apache2/sites-available/ชื่อไฟล์แรกที่เราแก้ไข.conf /etc/apache2/sites-enabled/ชื่อเดียวกันกับเว็บไซต์.conf ตัวอย่าง $ sudo ln -s /etc/apache2/sites-available/phaonix.conf /etc/apache2/sites-enabled/phaonix.conf ...
หลังจากที่เราตั้งค่าเสร็จเรียบร้อยให้ทดลองเข้าใช้งานเว็บไซต์ดูครับว่าสามารถใช้งานแล้วตามภาพแล้วหรือไม่ ถ้าได้แล้วก็ไปต่อกันเลยครับ
แล้วทดลองเข้าใช้งานเว็บไซต์ผ่าน https ดูครับว่าผลลัพธ์เป็นแบบในภาพมั๊ย ถ้าเป็นก็ไม่ต้องตกใจนะครับเรายังไม่ได้เปิดใช้งาน SSL ครับมันไม่ขึ้นก็ถูกแล้วครับ
ทีนี้เราก็ดำเนินการเปิดใช้งาน module ssl และเปิดใช้งานเว็บไซต์กันครับ
$ sudo a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2 ... ทำการเปิดใช้งานเว็บไซต์ที่เราต้องการโดยพิมพ์ $ sudo a2ensite phaonix Removing dangling link /etc/apache2/sites-enabled/phaonix.confEnabling site phaonix. To activate the new configuration, you need to run: systemctl reload apache2 ... ทำการ reload apache2 service $ sudo systemctl reload apache2.service
หลังจากนั้นทดลองเข้าเว็บไซต์ผ่าน https อีกครั้งจะพบหน้าแจ้งเตือนว่าไม่ปลอดภัยเนื่องจากเราทำการ self-sign หรือทำการเซ็นใบรับรองด้วยตัวเอง ไม่มีใครเค้าเชื่อถือใบรับรองนี้ แต่เราทำขึ้นเพื่อให้การเชื่อมต่อระหว่าง Web Server กับ Web Browser ทำได้อย่างปลอดภัยขึ้นแค่นั้นเองครับ แต่ถ้าใครจะทำบน production แบบฟรี ๆ ก็ไปใช้บริการของ Let's Encrypt ได้นะครับ หรือจะเสียเงินซื้อ Cert เลยก็ได้เช่นกันครับ
คลิกปุ่มตามหมายเลขเพื่อยอมรับใบรับรองนี้แล้วไปที่หน้าเว็บจะได้รูปด้านล่างเป็นอันเสร็จพิธีครับ
ที่เหลือก็คือหากต้องการติดตั้งเว็บไซต์ก็สามารถนำไฟล์ และโฟลเดอร์ที่ต้องการไปวางไว้ที่ DocumentRoot ที่เราตั้งไว้ก็จะสามารถเปิดใช้งานเว็บไซต์ได้ทันทีครับ
แถมให้สำหรับผู้ที่ต้องการบังคับให้เปิดผ่าน https เลยตั้งแต่เข้าครั้งแรกนะครับให้ทำตามนี้ครับ
$ sudo a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: systemctl restart apache2 $ sudo systemctl reload apache2 $ sudo vim /etc/apache2/sites-available/phaonix.conf 12 NameVirtualHost *:80 3 4 ServerName 192.168.33.11 5 DocumentRoot /var/www/html 6 Redirect permanent / https://192.168.33.11 7 8 910 ServerAdmin webmaster@localhost 11 ServerName 192.168.33.11 12 DocumentRoot /var/www/html
เซฟแล้วทำการ reload apache อีกครั้งแล้วลองเข้าเว็บด้วย http ปกติมันจะ redirect ไปเข้า https อัตโนมัติครับ
สวีดัด สวัสดี
No comments:
Post a Comment