본문으로 건너뛰기

설정 참조

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

app: 접속 설정

필드설명
base_url클라우드 API 주소. 제공 정보에 따라 입력하며 일반적으로 수정할 필요가 없습니다
ignore_sslHTTPS 인증서 검증 무시 여부. 자체 서명 인증서를 사용하는 통제 환경에서만 활성화합니다
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

nginx, Apache HTTP Server, Tomcat 등 PEM 파일을 사용하는 시나리오에 적합합니다:

필드설명
cert_path사이트 인증서 파일 경로. 갱신 시 리프 인증서를 기록합니다. 만약 ca_path이(가) 비어 있으면 전체 인증서 체인도 함께 기록합니다
ca_pathCA 체인 파일 경로. 비어 있을 수 있음
key_path개인 키 파일 경로

pfx

단일 파일 인증서 패키지(PKCS#12)가 필요한 서비스에 적합합니다:

필드설명
pathPFX 파일 경로
key_passPFX 개인 키 비밀번호. 대상 서비스가 비밀번호를 요구하지 않으면 비워 둘 수 있습니다

jks

Tomcat 등 Java keystore 시나리오에 적합합니다:

필드설명
pathJKS 파일 경로
alias인증서 항목 별칭. 비어 있는 경우, keystore에 항목이 하나만 있을 때 자동으로 추론할 수 있습니다
key_pass항목 개인 키 비밀번호
store_passkeystore 비밀번호

iis

Windows IIS HTTPS 바인딩에 적용됩니다:

필드설명
nameIIS 사이트 이름, IIS 관리자에서 확인할 수 있습니다
addrHTTPS 바인딩 IP, *는 모든 IP를 의미합니다
portHTTPS 바인딩 포트
domainHTTPS 바인딩 도메인, SNI 도메인이 없으면 비워 둘 수 있습니다

IIS 설치 지점은 clmBot 내장 스크립트가 인증서 가져오기 및 바인딩 업데이트를 자동으로 완료하므로 일반적으로 스크립트 구성이 필요하지 않습니다.

exchange

Windows Exchange 서비스 인증서에 적용됩니다:

필드설명
services새 인증서를 활성화해야 하는 Exchange 서비스 이름 목록(예: ["IIS", "SMTP", "POP", "IMAP"])

스크립트 실행 설명

before_scriptafter_script는 인증서 갱신 시 다음 순서로 실행됩니다.

  1. 로컬 인증서 파일을 백업합니다(타임스탬프가 포함된 .bak 백업 생성).
  2. before_script를 실행하며, 실패하면 현재 설치 지점의 갱신을 중단합니다.
  3. 새 인증서를 기록합니다.
  4. after_script를 실행하여 미들웨어 서비스를 다시 로드하거나 재시작합니다.

로컬 인증서가 이미 최신인 경우, 전체 업데이트(스크립트 포함)가 건너뜁니다. 강제 실행이 필요한 경우 after_script, --force-after 매개변수를 사용할 수 있습니다.

스크립트는 Linux에서 bash로 실행되며, Windows에서는 powershell.exe -NoProfile -ExecutionPolicy Bypass로 실행됩니다.

스크립트 템플릿 변수

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 }}현재 타임스탬프(초)
{{ .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 체인 파일 경로
pem{{ .PEM_KEY_PATH }}개인 키 파일 경로
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 }}HTTPS 바인딩 IP
iis{{ .IIS_PORT }}HTTPS 바인딩 포트
iis{{ .IIS_DOMAIN }}HTTPS 바인딩 도메인
exchange{{ .EXCHANGE_SERVICES }}Exchange 서비스 이름 목록(쉼표로 구분)

보안 권장 사항

  • config.yaml에는 접속 자격 증명과 개인 키 경로가 포함되어 있으므로, 파일 권한을 실행 계정만 읽고 쓸 수 있도록 제한하세요(예: chmod 600 config.yaml).
  • AccessSecret는 저장 후 암호화된 형태로 보관되지만, 그래도 구성 파일을 신뢰할 수 없는 위치로 복사하지 마세요.
  • clmBot 전용 실행 계정을 사용하고 최소 권한으로 권한을 부여하세요. 실행 권한 요구 사항을 참조하세요.