구성 참조
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
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에 전용 실행 계정을 사용하고 최소 권한으로 권한을 부여하십시오. 실행 권한 요구 사항을 참조하십시오.