SSL 인증서란? HTTPS 보안을 위한 인증과 설치 방법 총정리

SSL 인증서는 웹사이트의 데이터를 암호화하여 안전하게 보호하는 핵심 기술입니다. 이 글에서는 SSL 인증서의 개념, 무료 발급 방법(Let’s Encrypt), 설치 절차, 그리고 인증서 종류까지 단계별로 쉽게 설명합니다.
SSL 인증서란? HTTPS 보안을 위한 인증과 설치 방법 총정리

비영리 인증기관으로 무료 DV 인증서를 90일 단위로 발급합니다. 자동화 도구(예: Certbot)와 함께 쓰면 갱신 부담이 거의 없어요. 보안 강도는 유료 DV와 동일합니다(차이는 검증 범위·지원/보증).

2) 무료 SSL 인증서의 장단점

  • 장점: 무료, 자동화 용이, 즉시 발급.

  • 단점: DV만 제공, 유료처럼 보험/보증 미제공, 전화/메일 지원이 제한적.

3) 무료 인증서 발급 절차(예: Certbot)

기본 흐름은 아래와 같습니다.

  1. 서버에 SSH 접속 → 패키지 설치

  2. 도메인 DNS가 해당 서버를 가리키는지 확인(A/AAAA 레코드)

  3. Certbot으로 HTTP-01(또는 DNS-01) 챌린지 수행

  4. 웹서버 설정 자동 갱신 → 인증서 저장(/etc/letsencrypt/live/...)

  5. cron/systemd timer로 자동 갱신


4. SSL 인증서 설치 가이드

1) 웹 서버별 설치 (요약)

Apache

  • 모듈 확인: a2enmod ssl headers

  • 가상호스트 예시:

    <VirtualHost *:443>
      ServerName example.com
      SSLEngine on
      SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
      SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
      Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    </VirtualHost>
    
  • HTTP→HTTPS 리디렉션 규칙 추가 혹은 80→443 가상호스트 리디렉션.

Nginx

  • 서버 블록 예시:

    server {
      listen 443 ssl http2;
      server_name example.com;
      ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    }
    
  • 80 포트에서 return 301 https://$host$request_uri; 리디렉션.

IIS(Windows)

  • “서버 인증서”에서 .pfx 가져오기 → 바인딩에서 https/443 추가 후 인증서 선택.

  • 자동 갱신은 win-acme 또는 스케줄러를 활용.

2) 도메인 적용 및 갱신 주의점

  • 체인 전체(fullchain)를 사용하세요(중간 인증서 누락 방지).

  • HSTS 적용 시 롤백이 어려우므로 초기엔 max-age를 짧게(예: 1일) 테스트 후 늘립니다.

  • 프록시/로드밸런서가 있을 땐 종단 암호화(TLS termination) 지점을 명확히.


5. SSL 인증서 오류 해결

1) “유효하지 않은 인증서” 원인

  • 중간 인증서 누락: chain이 불완전하면 경고 발생.

  • 만료: 90일/1년 만료를 놓쳤을 때.

  • CN/SAN 불일치: 접속 도메인과 인증서 도메인이 다름.

  • 시계 오차: 서버/클라이언트 시간이 크게 틀린 경우.

  • 혼합 콘텐츠(Mixed Content): HTTPS 페이지에 HTTP 리소스가 섞여 자물쇠가 해제.

2) 브라우저별 해결 팁 (크롬·아이폰 등)

  • 크롬: 개발자도구 → Security 탭으로 체인 확인. 캐시/Service Worker가 HTTP 리소스를 붙잡는지 체크.

  • iOS 사파리: 오래된 루트 인증서 신뢰 문제 가능. 최신 OS/브라우저로 업데이트, 체인 재배포.

  • 안드로이드 구형기기: TLS1.0/1.1 비활성화 영향. 서버는 TLS1.2+만 활성화 권장.


6. SSL 인증서 관리 및 보안 유지

1) 만료 알림 설정

  • Certbot은 systemd timer로 주기적 갱신을 시도합니다. 하지만 별도 알림(메일/슬랙/모니터링)이 안전합니다. --dry-run으로 정기 점검하세요.

2) 자동 갱신(Auto Renewal) 활용법

  • 리뉴얼 후 웹서버 재로드가 필요합니다.

    • Nginx: --deploy-hook "systemctl reload nginx"

    • Apache: --deploy-hook "systemctl reload apache2"

  • DNS-01(와일드카드용) 자동화를 위해 DNS API(Cloudflare, Route53 등) 토큰을 사용하면 무중단에 유리.

3) 추가 보안 팁

  • OCSP Stapling 활성화로 체인 검증 속도 개선.

  • 최신 암호군만 허용(ECDHE, AES-GCM, TLS1.2/1.3).

  • 키 관리: 개인키 권한 600, 루트 접근 최소화, 키 유출 시 즉시 폐기/재발급.

  • 보안 헤더: HSTS, Content-Security-Policy, X-Content-Type-Options 등 함께 적용.


마무리 요약 & 체크리스트

  • SSL/TLS는 암호화·무결성·인증을 제공하며 신뢰와 SEO 모두에 이롭습니다.

  • 사이트 규모가 작고 빠른 도입이 필요하면 Let’s Encrypt + Certbot이 가장 경제적입니다.

  • 서브도메인이 많다면 Wildcard, 여러 도메인을 한 번에 관리하려면 SAN/Multi-domain을 고려하세요.

  • 설치 후에는 체인 누락·혼합 콘텐츠·만료 세 가지만 주기적으로 점검해도 문제의 90%가 해결됩니다.

  • 자동 갱신과 보안 헤더까지 마치면 운영 피로도는 극적으로 줄어듭니다.

Share article

0.n년차 마케터 파타과니아