เอกสารอ้างอิงการกำหนดค่า
พฤติกรรมของ clmBot ถูกควบคุมโดยไฟล์การกำหนดค่า config.yaml ในไดเรกทอรีการติดตั้ง ไฟล์นี้จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อรัน login, discover-certificate หรือ add-server และยังสามารถแก้ไขด้วยตนเองได้
ตามค่าเริ่มต้น clmBot จะอ่าน config.yaml จากไดเรกทอรีปัจจุบัน และยังสามารถระบุเส้นทางไฟล์การกำหนดค่าผ่านพารามิเตอร์ส่วนกลาง -c ได้:
./clm-bot-linux-amd64 -c /opt/clm-bot/config.yaml update-certificate
โครงสร้างโดยรวม
app:
base_url: https://<云端地址>
ignore_ssl: false
access_key: YOUR_ACCESS_KEY
access_secret: YOUR_ACCESS_SECRET
servers:
- id: nginx_pem
sub_code: <证书订阅号>
format:
pem:
cert_path: /etc/nginx/ssl/example.com.crt
ca_path: /etc/nginx/ssl/example.com.ca.crt
key_path: /etc/nginx/ssl/example.com.key
before_script: |
...
after_script: |
nginx -t && nginx -s reload
แอป: การกำหนดค่าการเชื่อมต่อ
| ฟิลด์ | คำอธิบาย |
|---|---|
base_url | ที่อยู่ API บนคลาวด์ กรอกตามข้อมูลที่ได้รับมอบ โดยทั่วไปไม่จำเป็นต้องแก้ไข |
ignore_ssl | ว่าจะละเว้นการตรวจสอบใบรับรอง HTTPS หรือไม่ เปิดใช้งานเฉพาะในสภาพแวดล้อมที่มีการควบคุมซึ่งใช้ใบรับรองแบบลงนามเอง |
access_key | AccessKey ที่คลาวด์จัดสรรให้ |
access_secret | AccessSecret ที่คลาวด์จัดสรรให้ หลังจากโปรแกรมบันทึกค่าแบบข้อความธรรมดาครั้งแรก จะถูกย้ายเป็นค่าเข้ารหัสที่ขึ้นต้นด้วย ENC1+ โดยอัตโนมัติ |
servers: รายการจุดติดตั้ง
แต่ละรายการ servers[] สอดคล้องกับจุดติดตั้งใบรับรองหนึ่งจุด:
| ฟิลด์ | คำอธิบาย |
|---|---|
id | ตัวระบุจุดติดตั้ง แนะนำให้ใช้ชื่อที่มีความหมายทางธุรกิจ |
sub_code | หมายเลขการสมัครรับใบรับรอง สอดคล้องกับการสมัครรับใบรับรองในระบบจัดการ后台 clmBot จะดึงใบรับรองล่าสุดตามค่านี้ |
format | รูปแบบใบรับรองและเส้นทางไฟล์ สามารถเก็บได้เพียงหนึ่งใน pem, pfx, jks, iis, exchange |
before_script | สคริปต์ที่ทำงานก่อนอัปเดต หากสคริปต์ล้มเหลวจะหยุดการอัปเดตจุดติดตั้งปัจจุบัน |
after_script | สคริปต์ที่ทำงานหลังอัปเดต มักใช้เพื่อโหลดบริการมิดเดิลแวร์ใหม่ |
format:รูปแบบใบรับรอง
pem
เหมาะสำหรับสถานการณ์ที่ใช้ไฟล์ PEM เช่น nginx, Apache HTTP Server, Tomcat เป็นต้น:
| ฟิลด์ | คำอธิบาย |
|---|---|
cert_path | พาธไฟล์ใบรับรองของไซต์ เมื่ออัปเดตจะเขียนใบรับรองส่วนใบ (leaf certificate) หาก ca_path ว่างเปล่า จะเขียนสายใบรับรองแบบเต็มพร้อมกัน |
ca_path | พาธไฟล์ CA chain เว้นว่างได้ |
key_path | พาธไฟล์ private key |
pfx
เหมาะสำหรับบริการที่ต้องการไฟล์ใบรับรองแบบรวมไฟล์เดียว (PKCS#12):
| ฟิลด์ | คำอธิบาย |
|---|---|
path | พาธไฟล์ PFX |
key_pass | รหัสผ่าน private key ของ PFX เว้นว่างได้หากบริการปลายทางไม่บังคับใส่รหัสผ่าน |
jks
เหมาะสำหรับสถานการณ์ Java keystore เช่น Tomcat:
| ฟิลด์ | คำอธิบาย |
|---|---|
path | พาธไฟล์ JKS |
alias | alias รายการใบรับรอง เมื่อเว้นว่างไว้ จะอนุมานได้โดยอัตโนมัติเฉพาะเมื่อ keystore มีเพียงรายการเดียว |
key_pass | รหัสผ่านคีย์ส่วนตัวของรายการ |
store_pass | รหัสผ่าน keystore |
iis
เหมาะสำหรับการผูก HTTPS บน Windows IIS:
| ฟิลด์ | คำอธิบาย |
|---|---|
name | ชื่อไซต์ IIS สามารถดูได้ใน IIS Manager |
addr | IP สำหรับการผูก HTTPS * หมายถึง IP ทั้งหมด |
port | พอร์ตสำหรับการผูก HTTPS |
domain | โดเมนสำหรับการผูก HTTPS เว้นว่างได้หากไม่มีโดเมน SNI |
จุดติดตั้ง IIS ดำเนินการนำเข้าใบรับรองและอัปเดตการผูกโดยอัตโนมัติผ่านสคริปต์ในตัวของ clmBot โดยปกติไม่จำเป็นต้องกำหนดค่าสคริปต์
exchange
เหมาะสำหรับใบรับรองบริการ Windows Exchange:
| ฟิลด์ | คำอธิบาย |
|---|---|
services | รายชื่อบริการ Exchange ที่ต้องเปิดใช้งานใบรับรองใหม่ เช่น ["IIS", "SMTP", "POP", "IMAP"] |
คำอธิบายการทำงานของสคริปต์
before_script และ after_script จะถูกดำเนินการตามลำดับต่อไปนี้เมื่ออัปเดตใบรับรอง:
- สำรองไฟล์ใบรับรองในเครื่อง (สร้างข้อมูลสำรอง
.bakพร้อมประทับเวลา) - ดำเนินการ
before_scriptหากล้มเหลวจะหยุดการอัปเดตที่จุดติดตั้งปัจจุบัน - เขียนใบรับรองใหม่
- ดำเนินการ
after_scriptเพื่อโหลดซ้ำหรือรีสตาร์ทบริการมิดเดิลแวร์
เมื่อใบรับรองภายในเครื่องเป็นเวอร์ชันล่าสุดแล้ว กระบวนการอัปเดตทั้งหมด (รวมถึงสคริปต์) จะถูกข้ามไป หากต้องการบังคับให้ดำเนินการ after_script สามารถใช้พารามิเตอร์ --force-after ได้
สคริปต์ทำงานผ่าน bash บน Linux และผ่าน powershell.exe -NoProfile -ExecutionPolicy Bypass บน Windows
ตัวแปรเทมเพลตสคริปต์
เมื่อเขียน before_script / after_script คุณสามารถใช้ตัวแปรเทมเพลตต่อไปนี้ได้ clmBot จะแทนที่ด้วยค่าจริงก่อนดำเนินการ
ตัวแปรทั่วไป:
| ตัวแปร | คำอธิบาย |
|---|---|
{{ .ID }} | จุดติดตั้ง id |
{{ .SUB_CODE }} | หมายเลขการสมัครสมาชิกใบรับรอง |
{{ .OS_TYPE }} | ประเภทระบบปฏิบัติการ (windows / linux / darwin) |
{{ .IS_WINDOWS }} | เป็น Windows หรือไม่ (true / false) |
{{ .IS_LINUX }} | เป็น Linux หรือไม่ (true / false) |
{{ .TIMESTAMP }} | เวลาปัจจุบันในรูปแบบ timestamp (วินาที) |
{{ .DATETIME }} | วันที่และเวลาปัจจุบัน (รูปแบบ 2006-01-02 15:04:05) |
{{ .DATE }} | วันที่ปัจจุบัน (รูปแบบ 2006-01-02) |
{{ .LATEST }} | ใบรับรองเป็นเวอร์ชันล่าสุดแล้วหรือไม่ (true / false) เมื่อใช้ร่วมกับ --force-after จะสามารถใช้ในสคริปต์เพื่อตัดสินใจข้ามขั้นตอนถัดไปได้ |
ตัวแปรที่จัดเตรียมตามรูปแบบใบรับรอง:
| รูปแบบ | ตัวแปร | คำอธิบาย |
|---|---|---|
| pem | {{ .PEM_CERT_PATH }} | พาธไฟล์ใบรับรองของไซต์ |
| pem | {{ .PEM_CA_PATH }} | พาธไฟล์ CA chain |
| pem | {{ .PEM_KEY_PATH }} | พาธไฟล์ private key |
| pfx | {{ .PFX_PATH }} | พาธไฟล์ PFX |
| pfx | {{ .PFX_KEY_PASS }} | รหัสผ่านคีย์ส่วนตัว PFX |
| jks | {{ .JKS_PATH }} | พาธไฟล์ JKS |
| jks | {{ .JKS_ALIAS }} | นามแฝงรายการใบรับรอง |
| jks | {{ .JKS_KEY_PASS }} | รหัสผ่านคีย์ส่วนตัวของรายการ |
| jks | {{ .JKS_STORE_PASS }} | รหัสผ่าน keystore |
| iis | {{ .IIS_SITE_NAME }} | ชื่อไซต์ IIS |
| iis | {{ .IIS_IPADDR }} | IP การผูก HTTPS |
| iis | {{ .IIS_PORT }} | พอร์ตการผูก HTTPS |
| iis | {{ .IIS_DOMAIN }} | การผูกโดเมน HTTPS |
| exchange | {{ .EXCHANGE_SERVICES }} | รายชื่อบริการ Exchange (คั่นด้วยเครื่องหมายจุลภาค) |
ข้อแนะนำด้านความปลอดภัย
config.yamlมีข้อมูลรับรองการเข้าถึงและเส้นทางของคีย์ส่วนตัว โปรดจำกัดสิทธิ์ของไฟล์ให้เฉพาะบัญชีที่ใช้รันงานเท่านั้นที่อ่านเขียนได้ (เช่นchmod 600 config.yaml)- หลังจากบันทึกแล้ว
AccessSecretจะถูกจัดเก็บในรูปแบบเข้ารหัส แต่ยังควรหลีกเลี่ยงการคัดลอกไฟล์การกำหนดค่าไปยังตำแหน่งที่ไม่น่าเชื่อถือ - ใช้บัญชีผู้ใช้เฉพาะสำหรับการรันงานของ clmBot และให้สิทธิ์ตามหลักสิทธิ์ขั้นต่ำ ดูข้อกำหนดสิทธิ์ในการรันงาน