S3 Compatible Storage
S3 호환 객체 스토리지 버킷에 SSL 인증서를 자동으로 배포하는 방법.
개요
AutoSSL은 S3 호환 객체 스토리지 버킷에 SSL 인증서 파일을 자동으로 업로드할 수 있습니다. 사용자 지정 HTTPS 엔드포인트와 버킷 이름을 지정하므로, 전용 공급자로 다루지 않는 MinIO, Wasabi, Ceph 등 S3 호환 서비스에 적합합니다.
각 인증서는 버전 아카이브 경로에 보관되고, 이후 시스템(예: Nginx, Caddy, 객체 스토리지에서 인증서를 가져오는 스크립트)이 찾기 쉽도록 latest/ 경로도 함께 갱신됩니다.
이 배포를 관리하고 실행하는 방법은 배포 관리를 참고하세요.
구성 매개변수
AutoSSL 콘솔에서 이 배포 대상을 추가하거나 편집할 때 다음 매개변수를 구성합니다.
| 매개변수 | 설명 | 예시 |
|---|---|---|
| 엔드포인트 | S3 호환 API의 HTTPS URL. HTTP 엔드포인트는 지원하지 않습니다. | https://minio.example.com |
| 리전 | (선택) 요청 서명에 쓰는 리전. 기본값은 us-east-1입니다. 공급자가 요구하는 값을 사용하세요. | us-east-1 |
| 버킷 이름 | 인증서 파일을 업로드할 버킷 이름. | my-ssl-certs |
| 객체 키 접두사 | (선택) 버킷 안에서 인증서 파일을 정리하는 접두사. 설정하면 이 접두사 아래에 업로드됩니다. 끝의 슬래시는 생략할 수 있습니다. | certs/example.com/ |
| 경로 스타일 강제 | (선택) 경로 스타일 URL(https://endpoint/bucket/key)을 사용합니다. MinIO와 일부 자체 호스팅 S3 호환 서비스에서 켜세요. | true(MinIO) |
엔드포인트는 HTTPS여야 합니다. 보안을 위해 AutoSSL은 HTTP 엔드포인트를 거부합니다.
작동 방식
AutoSSL이 인증서를 S3 호환 버킷(예: my-ssl-certs, 접두사 certs/example.com/)에 배포할 때 다음을 수행합니다.
-
인증서 준비:
- 전체 인증서 체인을 PEM 파일로 나눕니다.
cert.pem(리프 인증서),privkey.pem(개인 키, PKCS#8),chain.pem(중간 체인),fullchain.pem(전체 체인)입니다. - 추적을 위해 인증서 메타데이터가 담긴
README.md를 만들고 https://autossl.dev 링크를 넣습니다. - 인증서
notBefore날짜와 SHA1 지문으로 아카이브 디렉터리 이름을 만듭니다(형식:YYYY-MM-DD_<first 8 chars of SHA1>).
- 전체 인증서 체인을 PEM 파일로 나눕니다.
-
파일 업로드:
- 인증서 파일(PEM 4개와 README.md)을 버킷의 두 경로에 업로드합니다.
- 아카이브 경로 —
certs/example.com/2026-05-30_e5f6a7b8/cert.pem(privkey.pem,chain.pem,fullchain.pem,README.md포함). 발급마다 고유하며 덮어쓰지 않습니다. - latest 경로 —
certs/example.com/latest/cert.pem(privkey.pem,chain.pem,fullchain.pem,README.md포함). 가장 최근에 업로드한 인증서를 가리킵니다.
- 아카이브 경로 —
- 인증서 파일(PEM 4개와 README.md)을 버킷의 두 경로에 업로드합니다.
latest/ 경로를 쓰면 이후 서비스가 고정된 객체 키에서 현재 인증서를 가져올 수
있습니다. 이전 인증서는 버전별 아카이브 디렉터리에 그대로 남습니다.
예시 버킷 구조
인증서를 여러 번 갱신하면 버킷 구조는 다음과 같습니다.
certs/example.com/
├── 2026-03-01_a1b2c3d4/
│ ├── cert.pem
│ ├── privkey.pem
│ ├── chain.pem
│ ├── fullchain.pem
│ └── README.md
├── 2026-05-30_e5f6a7b8/
│ ├── cert.pem
│ ├── privkey.pem
│ ├── chain.pem
│ ├── fullchain.pem
│ └── README.md
└── latest/
├── cert.pem
├── privkey.pem
├── chain.pem
├── fullchain.pem
└── README.md개인 키 형식
privkey.pem은 PKCS#8 형식(-----BEGIN PRIVATE KEY-----)입니다. Nginx, Caddy, Traefik, OpenSSL 1.1+ 등 최신 웹 서버와 도구에서 널리 지원합니다.
환경에서 PKCS#1 형식(예: RSA 키의 -----BEGIN RSA PRIVATE KEY-----)이 필요하면 사용 전에 로컬에서 변환하세요.
openssl rsa -in privkey.pem -out privkey-pkcs1.pem액세스 키 요구 사항
이 공급자에는 S3 호환 스토리지 자격 증명이 필요합니다.
필요한 권한
액세스 키는 대상 버킷에 객체를 업로드할 권한이 있어야 합니다. 최소한 다음 S3 작업이 필요합니다.
- 대상 버킷(또는 버킷 접두사)에 대한
s3:PutObject
MinIO에서는 대상 버킷에 s3:PutObject를 허용하는 정책을 사용자에게 부여하세요.
문제 해결
| 증상 | 해결 방법 |
|---|---|
| 연결 거부 또는 DNS 오류 | 엔드포인트 URL이 올바른지, AutoSSL에서 도달할 수 있는지 확인합니다. |
| 액세스 거부 | 액세스 키에 버킷에 대한 PutObject 권한이 있는지 확인합니다. |
| 서명 불일치 | 공급자가 요구하는 리전 값으로 바꿔 봅니다. |
| 사용자 지정 엔드포인트에서 버킷을 찾을 수 없음 | 경로 스타일 강제를 켭니다(MinIO에서 흔합니다). |