Post

HTTPS 인증서와 cert-manager

HTTPS 인증서가 필요한 이유, 갱신이 필요한 이유, cert-manager가 어떤 도움을 주는지 정리

HTTPS 인증서는 서버와 클라이언트 간 통신을 암호화하고, 서버의 신원을 확인하는 데 사용되는 디지털 문서
이를 통해 데이터 도청과 중간자 공격(Man-in-the-Middle)을 방지 가능

  • HTTP vs HTTPS:
    • HTTP는 암호화 없이 데이터를 전송. 민감한 정보에 부적합
    • HTTPS는 인증서를 사용하여 암호화된 안전한 통신 제공

1. 인증서가 왜 필요한가?

  • 사용자가 사이트에 접속할 때 “정말 이 서버가 믿을 수 있는 서버인가?”를 판단해야 함
  • 인증서는 제3자인 인증기관(CA)이 서버의 신원을 보증하는 구조
  • HTTPS 통신을 통해 데이터가 암호화되어 전송됨

2. 왜 인증서를 갱신해야 하나?

  • 인증서는 보통 90일 ~ 1년 주기로 유효기간이 있음
  • 갱신하지 않으면 브라우저가 접속을 차단하거나 ‘주의 요함’ 경고 발생
  • 키 유출/위조 방지와 보안 강화를 위해 짧은 유효기간이 선호됨
  • Let’s Encrypt는 기본적으로 90일 유효기간을 제공함

3. Kubernetes에서 cert-manager의 역할

  • cert-manager는 인증서 발급/갱신/관리 자동화 도구
  • Let’s Encrypt 같은 CA와 연동 가능
  • ingress 리소스와 연동되어 HTTPS 자동 설정 가능
  • 예시 사용법:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: enginrect-cert
      namespace: default
    spec:
      secretName: enginrect-tls
      issuerRef:
        name: letsencrypt-prod
        kind: ClusterIssuer
      commonName: www.enginrect.com
      dnsNames:
        - www.enginrect.com
        - api.enginrect.com
    
  • 발급된 인증서는 Secret 리소스로 저장되고 Ingress에서 참조 가능:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: enginrect-ingress
      annotations:
        cert-manager.io/cluster-issuer: "letsencrypt-prod"
    spec:
      tls:
        - hosts:
            - www.enginrect.com
          secretName: enginrect-tls
      rules:
        - host: www.enginrect.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: web-service
                    port:
                      number: 80
    

cert-manager 공식문서

This post is licensed under CC BY 4.0 by the author.