Skip to main content

เอกสารอ้างอิงการกำหนดค่า

พฤติกรรมของ 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_keyAccessKey ที่คลาวด์จัดสรรให้
access_secretAccessSecret ที่คลาวด์จัดสรรให้ หลังจากโปรแกรมบันทึกค่าแบบข้อความธรรมดาครั้งแรก จะถูกย้ายเป็นค่าเข้ารหัสที่ขึ้นต้นด้วย 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
aliasalias รายการใบรับรอง เมื่อเว้นว่างไว้ จะอนุมานได้โดยอัตโนมัติเฉพาะเมื่อ keystore มีเพียงรายการเดียว
key_passรหัสผ่านคีย์ส่วนตัวของรายการ
store_passรหัสผ่าน keystore

iis

เหมาะสำหรับการผูก HTTPS บน Windows IIS:

ฟิลด์คำอธิบาย
nameชื่อไซต์ IIS สามารถดูได้ใน IIS Manager
addrIP สำหรับการผูก HTTPS * หมายถึง IP ทั้งหมด
portพอร์ตสำหรับการผูก HTTPS
domainโดเมนสำหรับการผูก HTTPS เว้นว่างได้หากไม่มีโดเมน SNI

จุดติดตั้ง IIS ดำเนินการนำเข้าใบรับรองและอัปเดตการผูกโดยอัตโนมัติผ่านสคริปต์ในตัวของ clmBot โดยปกติไม่จำเป็นต้องกำหนดค่าสคริปต์

exchange

เหมาะสำหรับใบรับรองบริการ Windows Exchange:

ฟิลด์คำอธิบาย
servicesรายชื่อบริการ Exchange ที่ต้องเปิดใช้งานใบรับรองใหม่ เช่น ["IIS", "SMTP", "POP", "IMAP"]

คำอธิบายการทำงานของสคริปต์

before_script และ after_script จะถูกดำเนินการตามลำดับต่อไปนี้เมื่ออัปเดตใบรับรอง:

  1. สำรองไฟล์ใบรับรองในเครื่อง (สร้างข้อมูลสำรอง .bak พร้อมประทับเวลา)
  2. ดำเนินการ before_script หากล้มเหลวจะหยุดการอัปเดตที่จุดติดตั้งปัจจุบัน
  3. เขียนใบรับรองใหม่
  4. ดำเนินการ 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 และให้สิทธิ์ตามหลักสิทธิ์ขั้นต่ำ ดูข้อกำหนดสิทธิ์ในการรันงาน