ขั้นแรกติดตั้ง Ubuntu 18.04.1 LTS กันถ้าใครไม่รู้วิธีก็คลิกที่นี่
ขั้นต่อไปก็ตามข้างล่างเลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 ก่อนนะครับให้พิมพ์
1 2 3 4 5 6 | $ sudo openssl genrsa –out server.key 1024 Generating RSA private key, 1024 bit long modulus ......... + + + + + + ............... + + + + + + e is 65537 ( 0x010001 ) ... |
หลังจากได้ไฟล์ server.key มาแล้วเราจะทำการร้องขอ certificate request โดยพิมพ์
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ 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 นะครับ
1 2 3 4 5 | $ 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 ไฟล์สำหรับเว็บไซต์ของเรานะครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ 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 1 <ifmodule mod_ssl.c = ""> 2 NameVirtualHost * : 443 << บรรทัดนี้ต้องเพิ่มครับ 3 <virtualhost> << บรรทัดนี้ต้องแก้ครับ 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 ครับ < / virtualhost>< / ifmodule> |
เสร็จแล้วให้ดำเนินการสร้าง Sym link ของไฟล์ดังกล่าวไปไว้ที่ /etc/apache2/site-enabled/
1 2 3 4 | $ 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 และเปิดใช้งานเว็บไซต์กันครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $ 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 เลยตั้งแต่เข้าครั้งแรกนะครับให้ทำตามนี้ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $ 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 1 <ifmodule mod_ssl.c = ""> 2 NameVirtualHost * : 80 3 <virtualhost _default_: 443 = ""> 4 ServerName 192.168 . 33.11 5 DocumentRoot / var / www / html 6 Redirect permanent / https: / / 192.168 . 33.11 7 < / virtualhost> 8 9 <virtualhost _default_: 443 = ""> 10 ServerAdmin webmaster@localhost 11 ServerName 192.168 . 33.11 12 DocumentRoot / var / www / html < / virtualhost>< / ifmodule> |
เซฟแล้วทำการ reload apache อีกครั้งแล้วลองเข้าเว็บด้วย http ปกติมันจะ redirect ไปเข้า https อัตโนมัติครับ
สวีดัด สวัสดี
No comments:
Post a Comment