설정 참조
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_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
nginx, Apache HTTP Server, Tomcat 등 PEM 파일을 사용하는 시나리오에 적합합니다:
| 필드 | 설명 |
|---|---|
cert_path | 사이트 인증서 파일 경로. 갱신 시 리프 인증서를 기록합니다. 만약 ca_path이(가) 비어 있으면 전체 인증서 체인도 함께 기록합니다 |
ca_path | CA 체인 파일 경로. 비어 있을 수 있음 |
key_path | 개인 키 파일 경로 |
pfx
단일 파일 인증서 패키지(PKCS#12)가 필요한 서비스에 적합합니다:
| 필드 | 설명 |
|---|---|
path | PFX 파일 경로 |
key_pass | PFX 개인 키 비밀번호. 대상 서비스가 비밀번호를 요구하지 않으면 비워 둘 수 있습니다 |
jks
Tomcat 등 Java keystore 시나리오에 적합합니다:
| 필드 | 설명 |
|---|---|
path | JKS 파일 경로 |
alias | 인증서 항목 별칭. 비어 있는 경우, keystore에 항목이 하나만 있을 때 자동으로 추론할 수 있습니다 |
key_pass | 항목 개인 키 비밀번호 |
store_pass | keystore 비밀번호 |
iis
Windows IIS HTTPS 바인딩에 적용됩니다:
| 필드 | 설명 |
|---|---|
name | IIS 사이트 이름, IIS 관리자에서 확인할 수 있습니다 |
addr | HTTPS 바인딩 IP, *는 모든 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 매개변수를 사용할 수 있습니다.
스크립트는 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 전용 실행 계정을 사용하고 최소 권한으로 권한을 부여하세요. 실행 권한 요구 사항을 참조하세요.