เซ็ต Automatic HTTPS ด้วย Traefik และ Let’s Encrypt

wk
2 min readFeb 12, 2020

--

ตัวอย่าง

ต้องการเซ็ตให้ API ที่เขียนด้วย .NET Core ทำงานอยู่หลัง Traefik (ใช้ Traefik เป็น Reverse Proxy) โดย API ต้องรองรับ HTTPS และให้ Traefik เป็น Agent ในการ Generate Certificate จาก Let’s Encrypt โดยไม่มี User มาเกี่ยวข้อง

ขั้นตอน

  1. สร้าง Web API ด้วย .NET CLI
$ dotnet new webapi --language C# --out src/MyWeb

2. สร้าง src/MyWeb/Dockerfile สำหรับ Build

3. สร้างไฟล์ acme.json และเซ็ต Permission สำหรับเก็บ Private Key และ Certificate ที่ได้จาก Let’s Encrypt

$ echo {} > acme.json
$ chmod 600 acme.json

4. สร้าง docker-compose.yml เก็บ Config ต่าง ๆ ของ Traefik

  • ใช้ traefik.lllife.dev เป็นชื่อ Domain สำหรับขอ Certificate จาก Let’s Encrypt

5. Build โปรเจคด้วยคำสั่ง docker-compose build
6. รันโปรเจคด้วยคำสั่ง docker-compose up
7. เข้า Dashboard ขอบ Traefik ผ่าน Port 8080 (http://traefik.lllife.dev:8080)

8. เรียก API ผ่าน Port 443 (HTTPS) ด้วย curl

$ curl https://traefik.lllife.dev/dotnet/WeatherForecast

หรือ เข้าผ่าน Browser

8. ตรวจสอบ Certificate จะพบว่า Server ใช้ Certificate ที่ออกโดย Let’s Encrypt ซึ่ง Traefik จะขอ Certificate ใหม่อัตโนมัติเมื่อใกล้หมดอายุ (Certificate ของ Let’s Encrypt ใช้ได้ 90 วัน)

--

--

No responses yet