본문으로 건너뛰기

구성 참조

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