Mr.Green

สร้าง บันทึกและแบ่งปัน

พิมพ์ค้นหาบทความได้ในช่องค้นหา

Let’s Encrypt SSL ใน Pfsense

Let’s Encrypt SSL ใน Pfsense

สำหรับคนที่เข้ามาอ่าน เนื่องจากบทความติดตั้ง Let’s Encrypt SSL ใน Pfsense นี้ เขียนไว้ค่อนข้างจะนาน ข้อมูลต่างๆ ในบทความนี้ อาจจะไม่สมบูรณ์ เพราะอาจจะมีการอับเดทหรือเปลี่ยนแปลง แต่ สามารถอ่านอ้างอิงได้เพื่อเป็นแนวทางในการจัดทำ และ อ้างอิงมาจากเว็บนี้ครับ 

https://gainanov.pro/eng-blog/linux/installing-lets-encrypt-pfsense/

การดำเนินการทุกอย่างในติดตั้ง Let’s Encrypt SSL ใน Pfsense นี้  เกิดจากเว็บที่ลองทำมีปัญหากับการคอนฟิกค่า HTTPS  เพราะ  server ports 80 และส่งมายัง ports 443  จะมีปัญหาตอนเรียกค่า URL  ในบทความ แต่ก็แนะนำเผื่อจะได้นำไปใช้หรือพลิกแพลงได้

ขั้นตอนการปรับแต่ง Acme haproxy

รูปแบบโครงสร้างของระบบเครือข่าย เพื่อใช้อ้างอิงในบทความนี้

  1. Firewall pfsense  IP  192.168.101.
  2. Dynamic dns  2 ตัว โดยกำหนดชื่อ ciasteam.duckdns.ort  สำหรับ เข้าสู่ระบบ Bot โดยใช้ของ  duckdns.com  และอีกตัว กำหนดชื่อ intteam.ddnsfree.com   ใช้  dynu.com ตัวนี้ กำหนดเข้าสูเว็บไซต์ wordpress
  3. มี server 2  ตัว ติดตั้งภายในวง DMS  ตัวแรกหมายเลข ip 192.168.5.12  ทำหน้าที่เป็น bot  และอีกตัว 192.168.5.15  ทำหน้าที่บริการเว็บไซต์ ทั้งสองตัวนี้ แยกอยู่ใน วง DMZ   GW 192.168.5.1
  4. ติดตั้ง packet  ACME เพื่อเข้ารหัส ssl  โดยแยกเป็น 2  Certificate  ตัวหนึ่ง สำหรับ bot  อีกตัวสำหรับ website 
  5. ติดตั้ง packet haproxy   เพื่อกำหนดเส้นทางไปยัง server  bot ,web

เริ่มจากการ ติดตั้ง Acme  Package 

เส้นทางเพื่อเข้าไปติดตั้ง Acme

System /Package Manager/Available Packages

สร้าง Account Key

เส้นทาง   Services /Acme /Accountkeys

คลิก Add.  จากภาพด้านบน ได้สร้าง AccountBot  ไว้แล้ว 1 Account

การกำหนดค่า Account keys

ขั้นตอนการสร้าง 

  1. Name  ให้กำหนดชื่อที่เราจะสร้าง
  2. Description  คำอธิบาย
  3. ACME  ตัวเลือกว่าจะใช้ตัวไหน แต่ส่วนมากตามภาพ
  4. กำหนดเมล์เพื่อคอยเตือน
  5. กดเลือก Create new account key  เพื่อสร้างคีย์
  6. กดเลือก Register ACME account key
  7. Save

การสร้าง Certificates

ตัวอย่าง  Certificates  ที่สร้างเสร็จแล้ว

 จากภาพข้างบน จะเห็นว่า ได้สร้าง certificats   2 ตัว

  1. ตัวแรกกำหนดให้ใช้สำหรับ bot 
  2. ตัวที่สองกำหนดใช้สำหรับเว็บไซต์

(จำไว้ให้ดี นะครับ เพราะจะต้องไปอ้างอิงในขั้นตอนการปรับแต่ง Frontend  เราจะต้องกำหนด 2 ตัวนี้ เพื่อแยกการเข้ารหัสออกจากกัน

วิธีการสร้าง  certificates bot  แบบ standalone http server

หลังจากที่สร้าง Account keys  เสร็จก็สร้าง Certificaes

  ตามภาพ ด้านบน  คือการกำหนดชื่อของ Certificate  และกำหนด private key ให้กำหนดค่าตามภาพ

         ขั้นตอนต่อมา  ตามภาพด้านบนคือหน้าเดียวกันครับ แต่จับภาพได้ไม่หมด คือ การเข้ารหัส สำหรับ Server bot 

         หลังจากนั้น ก็เข้าไปตั้งค่าของ    Domain san list  สิ่งที่เราต้องกำหนดคือ

  1. ชื่อ Domainname จากบทความได้กำหนดว่า  ciasteam.duckdns.org  ซึ่งเป็น ddns ที่เราไปลงทะเบียนไว้ ที่เว็บไซต์ duckdns.org  เพื่อเข้าไปยังเครื่อง server ที่ใช้ทำ Bot
  2.  กำหนด method ให้เป็น แบบ Standalone HTTP  server  แล้ว
Port:HTTP listen port for stand-alone server. Must be 80 or have port 80 on WAN forwarded to this port. Firewall rules must allow traffic to reach this port.

         ในกรณีที่กำหนด Standalone HTTP Server   จะต้องมี ports 80 ว่าง เพราะโปรแกรมกำหนดว่า ต้องผ่าน ports 80   และเราต้องกำหนด ports อะไร ก็ได้ ขึ้นมาอีก ports  เพื่อไว้รองรับการทำงานที่ส่งต่อมาจาก Ports 80

          จาก ตัวอย่างกำหนด ports 8082  ซึ่งเราจะกำหนด ports อะไรก็ได้  และเราจะต้อง แก้ไข   Firewall/net  ให้ ports ดังกล่าว สามารถผ่านเข้ามาได้ และไปยังหมายเลขไอพี ขา lan ของpfsnse (ตามรายละเอียดข้างล่าง ท้ายบทความ)

ตัวอย่างการกำหนดค่า กรณีที่ เรากำหนด  Method  แบบ Standalone HTTP server

ในส่วนของ  Domainname  ก็กำหนดตามความต้อง และเลือกสร้าง Ports อีก Ports จากภาพเลือก 8082  และ Ports นี้ต้องกำหนดให้ผ่านมายัง Ports ได้

ตัวอย่างการกำหนด NAT

 Firewall / NAT / Port Forward

      ตามภาพข้างบน คือการสร้าง  rule  ซึ่งมันจะ forwards port 80 HTTP to port 8080  มายัง pfSense IP address 

      จากตัวอย่างที่ผ่านมาถือว่าเราปรับแต่ง เสร็จในส่วนที่เรากำหนด method standalone HTTP server

การสร้าง  certificates   แบบ method จากผู้ให้บริการ DDNS

ลองสร้างจาก  Duckdns.org ตามตัวอย่างที่ผ่านมา แต่ครั้งนี้ จะเปลี่ยนจาก  method  standalone HTTP server  มาเป็นแบบ ใช้ของ ddns

 ให้กำหนดค่าใน Domain SAN list ตามภาพข้างบน

  1. กำหนดค่า โดเมนเนม
  2. เลือก Method ให้ตรงกับ ddns  ของเรา ตามตัวอย่างของ DNS-DuckDns
  3. เพิ่มค่า API Teken  ซึ่งได้รับจากผู้ให้บริการ DDNS
  4. ให้เปิดค่า Enable DNS alias mode
  5. คลิกเลือก Enable DNS

กรณีการสร้าง Method จาก DDNS ของ dynu.com

      เหมือนกับขั้นตอนที่ผ่านมา คือกำหนด  Domain SAN List   โดยกำหนดชื่อ โดเมนเนม และเลือก Method DNS-Dynu

      แต่ในกรณีของ Dynu.com จะไม่มีการกำหนดค่า Token แต่ เอาค่า API Client id ,Secret  มาวางแทน   ค่าสองตัวนี้ ให้เข้าไปยังผู้ให้บริการ แล้ว  copy มาวาง 

ที่เหลือไม่ต้องแต่งค่า เป็นอันเสร็จ

การติดตั้ง HAProxy Package

System / Package Manager / Available Packages find a package haproxy. Click the install button and allow it to complete.

การกำหนดค่า HAProxy

HAProxy  คือการกำหนดเส้นทางเพื่อให้ไปยัง server ตามที่เราต้องการ

และจะมีการทำงานแบ่งเป็น 2  ส่วน คือ

  1. Frontend
  2. Backend 

       โดยปกติ เราสามารถ forward ผ่านทาง firewall/net ได้ แต่มีปัญหาตรง เส้นทางในการเข้ามา ports ไม่พอ และกรณีต้องการใช้ ssl  หากไม่มี Domain จริงไม่สามารถใช้ Certbot ได้ หากใช้ DDNS  จะไม่รองรับ และหากไม่รองรับจะไปแต่งค่า  server เพื่อรองรับ ports 443 ก็แต่งยาก เพราะต้องซื้อ เลยใช้วิธีการ ให้ Acme  เข้ารหัสให้ แล้วส่งต่อมายัง HAProxy อีกที่ในการสร้างและกำหนดเส้นทางไปยัง server แต่ละตัว และอย่างที่บอก ACME จะเข้ารหัส ดังนั้น ports แรกที่จะต้องรองรับคือ 443 ดังนั้น เราต้องกำหนด frontead เป็น 443 แล้วส่งต่อให้ backend เป็น ports 80 

แต่งค่า Backend ก่อน

          ข้้นตอนแรก ในการปรับแต่ง คือแต่งค่า Backend ก่อน ส่วนนี้ จะติดต่อกับ Server โดยตรง โดยรับค่ามาจาก Frontend .

 เส้นทาง  Services /HAProxy/backend

         จากภาพข้างบน จะเห็นว่า มี ชื่อ (์Name)  สองชือคือ

  1. ตัวแรกคือ apache2  จะใช้ชื่อนี้ในการติดต่อกับ frontend และต้องกำหนดค่าตัวนี้ลงรายละเอียดเกี่ยวกับ Server ของเราซึ่งใช้  Ports 80 ในที่นี้ คือ   Bot Server 
  2. ตัวที่สอง คือ wordpress  สำหรับติดต่อกับ frontend และกำหนดค่า เกี่ยวกับ Web server 

กำหนดในส่วนที่ต้องการจะทำ Bot server ก่อน

        มาลงรายละเอียดกัน

  1. ตัวแรกก่อน (ภาพด้านบน)  ตัวนี้ ชื่อ  apache2  เป็นชื่อในการอ้างอิงเพื่อติดต่อกับ frontend  สิ่งที่เราจะต้องกำหนด คือ  Server List   ตามภาพ คือกำหนดค่า ให้ Forwardto  ไปยัง ip Address  192.168.5.12  ซึ่งเป็น ip ของ bot  Server และกำหนดว่าให้ ผ่าน port 80 นั้นแสดงว่า server เราจะต้องเปิด ports 80  ไม่ใช่ 443
  2. กำหนดค่า Health check method ตามภาพข้างบน

มากำหนดในส่วนที่ต้องการทำ Web server

     กำหนด ในส่วนที่จะติดต่อ กับ website หมายเลขไอพี 192.158.5.15   Name= wordpress ใช้ชื่อนี้ ในการติดต่อกับ frontend  และติดต่อกับ server Forwardto 80  เช่นกัน ตามภาพข้างบน

การปรับแต่ง  Frontend

            จากภาพ ด้านบน คือภาพที่เรากำหนดค่าเสร็จแล้ว  จะเห็นว่าเรากำหนด  frontend ไว้ 2  ตัว คือ

  1. apche ,
  2. website 
  3. หมายเลขไอพี Address เหมือนกันทั้ง 2 ตัว เพราะเป็นไอพี จริงของผู้ให้บริการ ซึ่งมีแค่ไอพีเดียว และมีเครืองหมายกุญแจ แสดงว่ามีการเข้ารหัส
  4. หากดูตรง Type  จะเข้ารหัสแบบ  https 
  5. และดูตรง Backend สองตัว ตามขั้นตอนที่ผ่านมาที่บอกว่าเป็นตัวอ้างอิง  คือ apache2 และwordpress

วิธีการกำหนดค่า Bot server

จากภาพด้านบน จะเห็นว่า ได้กำหนด

  1. Name= apache
  2. Description ยังไมได้กำหนด คือคำอธิบาย
  3. Status=Acitve

Extenal address

  1. กำหนดให้ ขา wan เป็นส่วนที่รอรับการเชื่อมต่อเข้ามา
  2. กำหนด ports ให้เข้ามาผ่านทาง ports 443
  3. คลิกเลือกค่า ssl Offloading

กำหนดค่า

Access Control  Sete  

  1.  Name= apache 
  2. Value=  ciasteam.duckdns.org

 Actions 

คือการกำหนดให้ใช้ Backend ตัวไหน จากภาพข้างบน กำหนด ให้ใช้ Backend apache2  คือกำหนดว่า ให้ไปยัง backend ที่มีชื่อว่า apach2 ที่เรากำหนดตามขั้นตอนที่ผ่านมา.

Use “forwardfor” option 

ให้คลิกเลือกเลือก User forardfor 

Certificate 

     ขั้นตอนนี้ คือการเลือก Certificate  ทีเราสร้างขึ้นในขั้นตอนการปรับ แต่ง Acme ให้เลือกชื่อให้ตรงกับที่เราสร้างขึ้นมา อย่างในภาพ  Certificate CsdAcme คือตัวที่เราสร้างเพื่อเข้ารหัสผ่านช่องทางของ bot

การกำหนดค่า สำหรับเชื่อมต่อกับ Web Server

การปรับแต่ง HAProxy  Frontend ตัวที่ สอง คือการสร้างเส้นทางเพื่อไปยัง website

เนื่องจาก ip ที่ผ่านขา wan  มีแค่ค่าเดียวคือ  ip isp จ่ายมาก เราจึงกำหนดค่า  Shared Frontend  (ตามภาพข้างบนาฉ

หลังจากนั้น ก็เหมือนกับการสร้างตัวแรก แต่ครั้งนี้ เรากำหนดให้ Host matches ให้ตรงกับชื่อ dynamic dns ของ website  คือ  intteam.ddnsfree.com

ตามภาพข้าง บน เพื่อให้การเข้ารหัส แยกจากกันกับตัว bot  จึงกำหนดค่า เลือกตรงตัว User Offloading  แล้วเลือก Certificates ให้ตรงกับที่เราสร้างขึ้นมาสำหรับเชื่อมต่อกับเว็บไซต์ ตามภาพ จะชื่อว่า CsdCme web

เป็นอันว่า เสร็จสินการปรับแต่ง Acme HAProxy

Tags:  ,

Leave a Reply

Your email address will not be published. Required fields are marked *