Initial commit with manual documentation and certificate renewal guide
							
								
								
									
										11
									
								
								.claude/settings.local.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,11 @@ | |||
| { | ||||
|   "permissions": { | ||||
|     "allow": [ | ||||
|       "Bash(dir \"C:\\Users\\siwat\\Nextcloud\\Documents\\SATITM-Network 2024\\Manual\\photos\")", | ||||
|       "Bash(dir \"C:\\Users\\siwat\\Nextcloud\\Documents\\SATITM-Network 2024\\Manual\\photos\\cert_renew\")", | ||||
|       "Bash(python:*)" | ||||
|     ], | ||||
|     "deny": [], | ||||
|     "ask": [] | ||||
|   } | ||||
| } | ||||
							
								
								
									
										54
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,54 @@ | |||
| # Python | ||||
| __pycache__/ | ||||
| *.py[cod] | ||||
| *$py.class | ||||
| *.so | ||||
| .Python | ||||
| build/ | ||||
| develop-eggs/ | ||||
| dist/ | ||||
| downloads/ | ||||
| eggs/ | ||||
| .eggs/ | ||||
| lib/ | ||||
| lib64/ | ||||
| parts/ | ||||
| sdist/ | ||||
| var/ | ||||
| wheels/ | ||||
| *.egg-info/ | ||||
| .installed.cfg | ||||
| *.egg | ||||
| MANIFEST | ||||
| 
 | ||||
| # Virtual environments | ||||
| venv/ | ||||
| env/ | ||||
| ENV/ | ||||
| .venv/ | ||||
| .env/ | ||||
| 
 | ||||
| # IDE | ||||
| .vscode/ | ||||
| .idea/ | ||||
| *.swp | ||||
| *.swo | ||||
| *~ | ||||
| 
 | ||||
| # OS generated files | ||||
| .DS_Store | ||||
| .DS_Store? | ||||
| ._* | ||||
| .Spotlight-V100 | ||||
| .Trashes | ||||
| ehthumbs.db | ||||
| Thumbs.db | ||||
| desktop.ini | ||||
| 
 | ||||
| # Generated PDFs (optional - remove if you want to track PDFs) | ||||
| *.pdf | ||||
| 
 | ||||
| # Temporary files | ||||
| *.tmp | ||||
| *.temp | ||||
| *.log | ||||
							
								
								
									
										308
									
								
								CERT_RENEW.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						|  | @ -0,0 +1,308 @@ | |||
| # คู่มือการต่ออายุ Wildcard Certificate | ||||
| **โรงเรียนสาธิตจุฬาลงกรณ์มหาวิทยาลัย ฝ่ายมัธยม**   | ||||
| **คู่มือปฏิบัติการ IT** | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ภาพรวม | ||||
| 
 | ||||
| คู่มือนี้ให้คำแนะนำทีละขั้นตอนสำหรับการต่ออายุ wildcard certificate ประจำปีที่ใช้ในโครงสร้างเครือข่ายของโรงเรียน Certificate นี้ต้องต่ออายุทุกปีและต้องติดตั้งในสองตำแหน่งที่สำคัญ | ||||
| 
 | ||||
| ## ข้อมูล Certificate | ||||
| 
 | ||||
| - **ผู้ให้บริการ**: https://www.hostneverdie.com/ | ||||
| - **วันหมดอายุปัจจุบัน**: 21 พฤศจิกายน 2025 | ||||
| - **กำหนดการต่ออายุ**: ทุกปี (ขึ้นอยู่กับเวลาที่ทำการต่ออายุ) | ||||
| - **ประเภท Certificate**: Wildcard SSL Certificate | ||||
| 
 | ||||
| ## ข้อกำหนดเบื้องต้น | ||||
| 
 | ||||
| - สิทธิ์ผู้ดูแลระบบในการเข้าถึง FortiGate (10.0.98.1) | ||||
| - สิทธิ์ SSH/ผู้ดูแลระบบในการเข้าถึง Reverse Proxy server (10.3.2.10) | ||||
| - ไฟล์ certificate ใหม่ (.crt และ .key) ที่ได้จาก hostneverdie.com | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ส่วนที่ 1: การจัดหา Certificate | ||||
| 
 | ||||
| ### ขั้นตอนที่ 1: รับ Certificate ใหม่จากผู้ให้บริการ | ||||
| 
 | ||||
| 1. ติดต่อผู้ให้บริการ hostneverdie.com เพื่อขอต่ออายุ certificate | ||||
| 2. รอรับไฟล์ certificate ใหม่ทางอีเมล์: | ||||
|    - ไฟล์ Certificate (.crt) | ||||
|    - ไฟล์ Private key (.key) | ||||
| 
 | ||||
| ### ขั้นตอนที่ 2: ตรวจสอบไฟล์ Certificate | ||||
| 
 | ||||
| 1. ตรวจสอบให้แน่ใจว่าคุณมีทั้งสองไฟล์: | ||||
|    - `domain.crt` (ไฟล์ certificate) | ||||
|    - `domain.key` (ไฟล์ private key) | ||||
| 2. จดบันทึกวันหมดอายุใหม่สำหรับเอกสาร | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ส่วนที่ 2: การติดตั้งใน FortiGate (10.0.98.1) | ||||
| 
 | ||||
| ### ขั้นตอนที่ 3: เข้าถึง FortiGate Management Interface | ||||
| 
 | ||||
| 1. เปิดเว็บเบราว์เซอร์และไปที่: `https://10.0.98.1` | ||||
| 2. เข้าสู่ระบบด้วยข้อมูลประจำตัวผู้ดูแลระบบ | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 3. ตรวจสอบให้แน่ใจว่าคุณอยู่ใน **root VDOM** (ตรวจสอบมุมบนขวา) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ### ขั้นตอนที่ 4: นำเข้า Certificate ใหม่ | ||||
| 
 | ||||
| 1. ไปที่ **System** → **Certificates** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 2. คลิกปุ่ม **Create/Import** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 3. เลือก **Certificate** จาก dropdown | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 4. เลือก **Import Certificate** | ||||
| 
 | ||||
| 5. ใน Certificate import dialog: | ||||
|    - คลิก **Browse** ข้างช่อง **Certificate** | ||||
|    - เลือกไฟล์ `.crt` ของคุณ | ||||
|    - คลิก **Browse** ข้างช่อง **Private Key**   | ||||
|    - เลือกไฟล์ `.key` ของคุณ | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 6. คลิก **Create** เพื่อนำเข้า certificate | ||||
| 
 | ||||
| 
 | ||||
| ### ขั้นตอนที่ 5: อัปเดต Authentication Settings | ||||
| 
 | ||||
| 1. ไปที่ **User & Authentication** → **Authentication Settings** | ||||
| 
 | ||||
| 
 | ||||
| 2. ในส่วน **Certificate** เลือก certificate ที่เพิ่งนำเข้ามา | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 3. คลิก **Apply** เพื่อบันทึกการเปลี่ยนแปลง | ||||
| 
 | ||||
| ### ขั้นตอนที่ 6: อัปเดต SSL/SSH Inspection Profile | ||||
| 
 | ||||
| **⚠️ สำคัญ: ลบ certificate เก่าออกก่อนที่จะเพิ่ม certificate ใหม่** | ||||
| 
 | ||||
| 1. ไปที่ **Security Profiles** → **SSL/SSH Inspection** | ||||
| 
 | ||||
| 
 | ||||
| 2. ค้นหาและแก้ไข profile **"reverse-proxy"** | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 3. ในส่วน **Server Certificate**: | ||||
|    - **ขั้นแรก**: ลบ certificate เก่าโดยคลิกปุ่ม **X** หรือ **Remove** | ||||
|    - **จากนั้น**: เลือก certificate ที่เพิ่งนำเข้ามา | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 4. คลิก **OK** เพื่อบันทึกการเปลี่ยนแปลงของ profile | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ส่วนที่ 3: การติดตั้งใน Reverse Proxy (10.3.2.10) | ||||
| 
 | ||||
| ### ขั้นตอนที่ 7: เข้าถึง Reverse Proxy Server | ||||
| 
 | ||||
| 1. เชื่อมต่อไปยัง reverse proxy server ผ่าน SSH: | ||||
|    ```bash | ||||
|    ssh cud@10.3.2.10 | ||||
|    ``` | ||||
| 
 | ||||
| 2. ไปยัง certificate directory: | ||||
|    ```bash | ||||
|    cd /etc/nginx/certs/ | ||||
|    ``` | ||||
| 
 | ||||
| ### ขั้นตอนที่ 8: สำรองข้อมูล Certificate ที่มีอยู่ | ||||
| 
 | ||||
| 1. สร้างการสำรองข้อมูลของ certificate ปัจจุบัน: | ||||
|    ```bash | ||||
|    sudo cp satitm.crt satitm.crt.backup.$(date +%Y%m%d) | ||||
|    sudo cp satitm.key satitm.key.backup.$(date +%Y%m%d) | ||||
|    ``` | ||||
| 
 | ||||
| 
 | ||||
| 2. แสดงรายการไฟล์เพื่อตรวจสอบการสร้างข้อมูลสำรอง: | ||||
|    ```bash | ||||
|    ls -la | ||||
|    ``` | ||||
| 
 | ||||
| 
 | ||||
| ### ขั้นตอนที่ 8: อัปโหลดไฟล์ Certificate ด้วย WinSCP | ||||
| 
 | ||||
| 1. ดาวน์โหลดและติดตั้ง WinSCP จาก https://winscp.net/eng/downloads.php (หากยังไม่ได้ติดตั้ง) | ||||
| 
 | ||||
| 2. เปิดโปรแกรม WinSCP | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 3. สร้างการเชื่อมต่อใหม่: | ||||
|    - **Host name**: 10.3.2.10 | ||||
|    - **User name**: cud | ||||
|    - **Password**: [รหัสผ่าน] | ||||
|    - **Port**: 22 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 4. คลิก **Login** เพื่อเชื่อมต่อ | ||||
| 
 | ||||
| 5. หากเป็นการเชื่อมต่อครั้งแรก จะมีป๊อปอัปขอยืนยัน SSH key คลิก **Accept** เพื่อยอมรับ (ขั้นตอนนี้เป็นทางเลือก) | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 6. ในหน้าต่าง WinSCP: | ||||
|    - **ด้านซ้าย**: ไฟล์ในเครื่อง Windows ของคุณ | ||||
|    - **ด้านขวา**: ไฟล์ในเซิร์ฟเวอร์ Linux | ||||
| 
 | ||||
| 7. นำทางไปยังโฟลเดอร์ที่มีไฟล์ certificate ใหม่ (ด้านซ้าย) | ||||
| 
 | ||||
| 8. นำทางไปยังโฟลเดอร์ home directory เช่น `/home/cud/` (ด้านขวา) | ||||
| 
 | ||||
| 
 | ||||
| 9. ลากไฟล์ certificate (.crt) และ private key (.key) จากด้านซ้ายไปด้านขวา | ||||
| 
 | ||||
| 
 | ||||
| 10. ตรวจสอบว่าไฟล์ถูกอัปโหลดสำเร็จแล้ว | ||||
| 
 | ||||
| 
 | ||||
| ### ขั้นตอนที่ 9: ติดตั้งไฟล์ Certificate ใหม่ | ||||
| 
 | ||||
| 1. คัดลอกไฟล์ certificate จาก `/home/cud/` ไปยังตำแหน่งที่ถูกต้อง: | ||||
|     | ||||
|    **หมายเหตุ**: ชื่อไฟล์ที่คุณได้รับอาจแตกต่างกัน เพื่อความสะดวกในการคัดลอกคำสั่ง ควรเปลี่ยนชื่อไฟล์ให้เป็น `certificate.crt` และ `private.key` ก่อน | ||||
|     | ||||
|    ```bash | ||||
|    sudo cp /home/cud/certificate.crt /etc/nginx/certs/satitm.crt | ||||
|    sudo cp /home/cud/private.key /etc/nginx/certs/satitm.key | ||||
|    ``` | ||||
| 
 | ||||
| 2. กำหนดสิทธิ์ที่ถูกต้อง: | ||||
|    ```bash | ||||
|    sudo chmod 644 /etc/nginx/certs/satitm.crt | ||||
|    sudo chmod 600 /etc/nginx/certs/satitm.key | ||||
|    sudo chown root:root /etc/nginx/certs/satitm.* | ||||
|    ``` | ||||
| 
 | ||||
| ### ขั้นตอนที่ 10: รีสตาร์ท Nginx Service | ||||
| 
 | ||||
| 1. ทดสอบการกำหนดค่า Nginx: | ||||
|    ```bash | ||||
|    sudo nginx -t | ||||
|    ``` | ||||
|    ผลลัพธ์ที่คาดหวัง: | ||||
|    ``` | ||||
|    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok | ||||
|    nginx: configuration file /etc/nginx/nginx.conf test is successful | ||||
|    ``` | ||||
| 
 | ||||
| 2. หากการทดสอบการกำหนดค่าผ่าน ให้รีสตาร์ท Nginx: | ||||
|    ```bash | ||||
|    sudo service nginx restart | ||||
|    ``` | ||||
| 
 | ||||
| 3. ตรวจสอบว่า Nginx กำลังทำงาน: | ||||
|    ```bash | ||||
|    sudo service nginx status | ||||
|    ``` | ||||
|    ผลลัพธ์ที่คาดหวัง (ดูที่บรรทัด Active): | ||||
|    ``` | ||||
|    ● nginx.service - A high performance web server and a reverse proxy server | ||||
|         Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) | ||||
|         Active: active (running) since Wed 2025-08-27 06:04:11 UTC; 4 days ago | ||||
|           Docs: man:nginx(8) | ||||
|       Main PID: 11527 (nginx) | ||||
|          Tasks: 49 (limit: 4548) | ||||
|         Memory: 129.1M | ||||
|    ``` | ||||
|    **สำคัญ**: ตรวจสอบให้แน่ใจว่าบรรทัด "Active" แสดงสถานะ "active (running)" | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ส่วนที่ 4: การตรวจสอบและทดสอบ | ||||
| 
 | ||||
| ### ขั้นตอนที่ 11: ตรวจสอบการติดตั้ง Certificate | ||||
| 
 | ||||
| 1. **ทดสอบ FortiGate Certificate**: | ||||
|    - เข้าถึง web interface ของ FortiGate | ||||
|    - ตรวจสอบว่าเบราว์เซอร์แสดง certificate ที่ถูกต้อง | ||||
|    - ตรวจสอบวันหมดอายุในรายละเอียด certificate ของเบราว์เซอร์ | ||||
| 
 | ||||
| 
 | ||||
| 2. **ทดสอบ Reverse Proxy Certificate**: | ||||
|    - เข้าถึงบริการผ่าน reverse proxy | ||||
|    - ตรวจสอบ SSL certificate ในเบราว์เซอร์ | ||||
|    - ตรวจสอบรายละเอียด certificate สำหรับวันหมดอายุที่ถูกต้อง | ||||
| 
 | ||||
| 
 | ||||
| ### ขั้นตอนที่ 12: อัปเดตเอกสาร | ||||
| 
 | ||||
| 1. บันทึกวันหมดอายุ certificate ใหม่ | ||||
| 2. อัปเดตระบบตรวจสอบ/ติดตาม certificate | ||||
| 3. ตั้งการแจ้งเตือนในปฏิทินสำหรับการต่ออายุปีหน้า (แนะนำ 30-60 วันก่อนหมดอายุ) | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## การแก้ไขปัญหา | ||||
| 
 | ||||
| ### ปัญหาที่พบบ่อย | ||||
| 
 | ||||
| **การนำเข้า Certificate ใน FortiGate ล้มเหลว** | ||||
| - ตรวจสอบรูปแบบไฟล์ certificate และ key | ||||
| - ตรวจสอบให้แน่ใจว่าคุณอยู่ใน root VDOM | ||||
| - ตรวจสอบว่า certificate และ private key ตรงกัน | ||||
| 
 | ||||
| **Nginx ไม่สามารถเริ่มต้นหลังจากติดตั้ง Certificate** | ||||
| - รัน `sudo nginx -t` เพื่อตรวจสอบ syntax ของการกำหนดค่า | ||||
| - ตรวจสอบสิทธิ์ไฟล์ certificate (644 สำหรับ .crt, 600 สำหรับ .key) | ||||
| - ตรวจสอบว่าไฟล์ certificate ไม่เสียหาย | ||||
| 
 | ||||
| **Certificate แสดงเป็น Invalid ในเบราว์เซอร์** | ||||
| - ตรวจสอบว่าการติดตั้ง certificate สำเร็จแล้ว | ||||
| - ล้าง cache และ cookies ของเบราว์เซอร์ | ||||
| - ตรวจสอบวันหมดอายุและระยะเวลาที่ certificate ใช้ได้ | ||||
| 
 | ||||
| ### การคืนค่าในกรณีฉุกเฉิน | ||||
| 
 | ||||
| หากเกิดปัญหาหลังจากการติดตั้ง certificate: | ||||
| 
 | ||||
| **การคืนค่า FortiGate**: | ||||
| 1. เปลี่ยนกลับไปใช้ certificate ก่อนหน้าใน SSL/SSH Inspection profile | ||||
| 2. อัปเดต Authentication Settings เพื่อใช้ certificate ก่อนหน้า | ||||
| 
 | ||||
| **การคืนค่า Reverse Proxy**: | ||||
| 1. กู้คืน certificate สำรอง: | ||||
|    ```bash | ||||
|    sudo cp satitm.crt.backup.YYYYMMDD satitm.crt | ||||
|    sudo cp satitm.key.backup.YYYYMMDD satitm.key | ||||
|    ``` | ||||
| 2. รีสตาร์ท Nginx: `sudo service nginx restart` | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## ข้อมูลการติดต่อ | ||||
| 
 | ||||
| สำหรับความช่วยเหลือในการต่ออายุ certificate: | ||||
| - **ผู้ให้บริการ Certificate**: https://www.hostneverdie.com/ | ||||
| - **ติดต่อฉุกเฉิน**: ศิวัช ศิริชัย 086-789-5193 | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| **เวอร์ชันเอกสาร**: 1.0   | ||||
| **อัปเดตล่าสุด**: 31 สิงหาคม 2025   | ||||
| **ทบทวนครั้งต่อไป**: 31 สิงหาคม 2026 | ||||
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_create_import_cert.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 411 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_import_certificate.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 114 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_menu_certificate.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 60 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_reverse_proxy_cert.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 202 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_ssl_ssh_server_cert.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 349 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_upload_cert.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 94 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/cert_renew/fgt_user_auth_cert.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 320 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/common/fortigate_dashboard.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 310 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/common/fortigate_login.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 46 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/common/fortigate_vdom_global.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 54 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/common/fortigate_vdom_root.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 22 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/winscp/accept_ssh_key.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 100 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/winscp/login.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 212 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/winscp/main_window.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 218 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/winscp/main_window_connected.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 166 KiB | 
							
								
								
									
										
											BIN
										
									
								
								photos/winscp/new_tab.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 45 KiB |