AutoSSL
인증서 배포

Azure Blob Storage

SSL 인증서를 Azure Blob Storage 컨테이너에 자동으로 배포하는 방법.

개요

AutoSSL은 SSL 인증서 파일을 Azure Blob Storage 컨테이너에 자동으로 업로드할 수 있습니다. 각 인증서는 버전 아카이브 경로에 보관되고, 이후 시스템이 찾기 쉽도록 latest/ 경로도 함께 갱신됩니다.

이 배포를 관리하고 실행하는 방법은 배포 관리를 참고하세요.

구성 매개변수

AutoSSL 콘솔에서 이 배포 대상을 추가하거나 편집할 때 다음 매개변수를 구성합니다.

매개변수설명예시
스토리지 계정 이름Blob 컨테이너가 있는 Azure Storage 계정 이름.mystorageaccount
컨테이너 이름인증서 파일을 업로드할 Blob 컨테이너 이름.ssl-certs
Blob 이름 접두사(선택) 컨테이너 안에서 인증서 파일을 정리하는 접두사. 설정하면 이 접두사 아래에 업로드됩니다. 끝의 슬래시는 생략할 수 있습니다.certs/example.com/

작동 방식

AutoSSL이 인증서를 Blob 컨테이너(예: 스토리지 계정 mystorageaccount, 컨테이너 ssl-certs, 접두사 certs/example.com/)에 배포할 때 다음을 수행합니다.

  1. 인증서 준비:

    • 전체 인증서 체인을 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>).
  2. 파일 업로드:

    • 인증서 파일(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 포함). 가장 최근에 업로드한 인증서를 가리킵니다.

latest/ 경로를 쓰면 이후 서비스가 고정된 Blob 이름에서 현재 인증서를 가져올 수 있습니다. 이전 인증서는 버전별 아카이브 디렉터리에 그대로 남습니다.

예시 컨테이너 구조

인증서를 여러 번 갱신하면 컨테이너 구조는 다음과 같습니다.

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

액세스 키 요구 사항

Azure Blob Storage에 연결하려면 Azure 서비스 주체가 필요합니다.

필요한 권한

서비스 주체는 대상 컨테이너에서 Blob을 만들고 덮어쓸 권한이 있어야 합니다. 스토리지 계정 또는 컨테이너 범위에 다음 데이터 평면 RBAC 역할을 할당하세요.

  • Storage Blob Data Contributor(권장)

Storage Account Contributor 같은 제어 평면 역할은 Blob 업로드 권한을 주지 않습니다. 배포가 This request is not authorized to perform this operation으로 실패하면 아래 RBAC 역할 할당과 스토리지 계정 방화벽을 모두 확인하세요.

RBAC 역할 할당

컨테이너 범위에 역할을 부여하면 최소 권한에 가깝습니다.

  1. Azure Portal에서 Storage Account → Containers로 이동해 대상 컨테이너를 선택합니다.
  2. Access control (IAM) → Add role assignment로 이동합니다.
  3. Role 탭에서 Storage Blob Data Contributor를 선택합니다.
  4. Members 탭에서:
    • Assign access to를 User, group, or service principal로 설정합니다.
    • Select members를 클릭합니다.
    • 앱 등록 표시 이름(예: AutoSSL) 또는 Client ID로 검색합니다.
    • 유형이 Application 또는 Service principal인 결과를 선택합니다. 사용자 계정은 선택하지 마세요.
  5. 검토한 뒤 할당합니다.

검색에 앱이 보이지 않으면 Microsoft Entra ID → Enterprise applications에서 Application type을 All applications로 두고 서비스 주체가 있는지 확인하세요. 새로 만든 주체는 IAM 검색에 나타나기까지 몇 분이 걸릴 수 있습니다.

자세한 내용은 Azure Blob Storage 액세스 제어 문서를 참고하세요.

스토리지 계정 방화벽 구성

AutoSSL은 공용 인터넷으로 Blob Storage에 연결합니다. 스토리지 계정이 네트워크 액세스를 제한하면 RBAC가 맞아도 요청이 차단됩니다.

  1. Storage Account → Networking → Firewalls and virtual networks를 엽니다.
  2. 다음 중 하나를 선택합니다.
    • Enabled from all networks — 처음 설정하고 시험할 때 가장 단순합니다.
    • Enabled from selected networks — Address range에 AutoSSL의 아웃바운드 IP 주소를 추가합니다.
  3. 변경 사항을 저장하고 배포를 다시 시도합니다.

스토리지 계정이 가상 네트워크나 프라이빗 엔드포인트로만 접근할 수 있으면, 호환되는 네트워크 경로를 두지 않는 한 AutoSSL이 공용 인터넷에서 연결할 수 없습니다.

Azure Blob Storage | AutoSSL