웹 서비스 개발 – 웹 서비스 보안 – 1 – HTTPS 구성과 인증서 발급

웹 서비스 개발 - 웹 서비스 보안 - 1 - HTTPS 구성과 인증서 발급
웹 서비스 개발 – 웹 서비스 보안 – 1 – HTTPS 구성과 인증서 발급

웹 서비스 개발 – 웹 서비스 보안 – HTTPS 구성과 인증서 발급

안녕하세요, 웹 보안에 관심 있는 개발자 여러분! 😊
오늘은 안전한 웹 서비스의 출발점인 HTTPS 구성 방법과 SSL/TLS 인증서 발급 과정을
하나하나 친절하게 알려드릴게요.

요즘은 사용자가 웹사이트를 방문할 때 자물쇠 아이콘이 없는 것만으로도 불신을 갖게 되죠.
특히, 크롬 브라우저는 HTTP 사이트에 “주의 요함” 문구까지 표시하니까요! 😱
그렇다면 내 사이트에 HTTPS를 적용하려면 어떻게 해야 할까요?
오늘 바로 그것을 함께 해봅시다!


1. HTTPS란 무엇인가요?

  • HTTPS는 **HTTP + TLS(또는 SSL)**의 조합입니다.
  • 데이터를 보내고 받을 때 암호화, 무결성, 인증이 보장되는 프로토콜이죠.

📦 예를 들어,

http://example.com → 암호화 없음 → 해커에게 평문 노출 위험
https://example.com → 암호화 통신 → 안심하고 데이터 송수신 가능

2. HTTPS를 구성하기 위한 준비물 체크리스트 ✅

항목 설명
도메인 인증서가 적용될 도메인 주소
웹 서버 Apache, Nginx 등
공인 IP 또는 외부에서 접근 가능한 서버 인증서 발급 시 인증 필요
SSL/TLS 인증서 CA에서 발급 받은 파일 (보통 PEM 형식)
인증서 설치 권한 서버의 설정 파일을 수정할 수 있어야 함

3. 인증서 발급 방법 3가지 소개

1️⃣ 무료 인증서 – Let’s Encrypt

  • 전 세계에서 가장 많이 쓰이는 무료 SSL 인증서
  • 자동 갱신 가능, 신뢰성 높음
  • CLI 툴 certbot으로 간편하게 발급

2️⃣ 유료 인증서 – Comodo, DigiCert, GlobalSign 등

  • 기업 신원 확인, 와일드카드 지원, 보증 범위 넓음
  • 인증서 파일은 메일로 제공되며 직접 설치

3️⃣ 자체 서명 인증서 (Self-Signed)

  • 테스트 환경이나 내부망에서만 사용
  • 브라우저에서 “신뢰할 수 없음” 경고 표시됨

4. Let’s Encrypt로 인증서 발급하기 (무료)

🐧 Ubuntu 기준 (Apache 웹 서버)

sudo apt update
sudo apt install certbot python3-certbot-apache

인증서 발급 명령어

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

🔄 발급 후 자동으로 Apache 설정까지 마쳐줍니다!


🧩 Nginx 웹 서버일 경우

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

🔁 자동 갱신 설정 확인

sudo systemctl list-timers
# 또는
sudo certbot renew --dry-run

Let’s Encrypt 인증서는 90일 유효이므로 반드시 자동 갱신 필요!


5. 유료 인증서 설치 방법 (수동 설치)

발급받은 파일 예시

  • yourdomain.crt: 인증서 파일
  • yourdomain.key: 개인 키 파일
  • ca_bundle.crt: 체인 인증서 (중간 인증기관 포함)

Nginx 설정 예시

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate     /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;
    ssl_trusted_certificate /etc/ssl/certs/ca_bundle.crt;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /var/www/html;
        index index.html;
    }
}

Apache 설정 예시

<VirtualHost *:443>
    ServerName yourdomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
    SSLCertificateChainFile /etc/ssl/certs/ca_bundle.crt
</VirtualHost>

6. HTTPS 강제 리디렉션 설정

모든 사용자가 HTTPS로 접속하게 하려면 아래 설정도 필요해요!

Nginx에서 HTTP → HTTPS 리디렉션

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

Apache .htaccess 설정

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

7. 인증서 적용 확인 방법

  1. 브라우저 주소창에서 🔒 자물쇠 아이콘 확인
  2. SSL Labs에서 테스트
  3. 터미널로 확인:
openssl s_client -connect yourdomain.com:443

8. 인증서 발급 시 주의할 점 📌

항목 주의사항
도메인 오타 발급은 됐는데 적용이 안 되는 경우 대부분 오타
방화벽 설정 80/443 포트가 열려 있어야 인증 가능
인증기관 신뢰 여부 사설 인증서는 브라우저에서 경고 발생
인증서 만료 알림 설정 Let’s Encrypt는 특히 주기적인 확인 필수
서브도메인 처리 www 포함 여부, 와일드카드 인증서 사용 여부 고려

9. HTTPS 도입 후의 변화

항목 HTTPS 적용 전 HTTPS 적용 후
주소창 표시 http\:// https\:// + 🔒
개인정보 보호 없음 ✅ 암호화 전송
검색엔진 노출 일반 수준 SEO 점수 향상
사용자 신뢰도 낮음 ✅ 신뢰도 상승
로그인/결제 안정성 취약 ✅ 보안 강화

마무리하며 😊

이제 여러분도 내 사이트에 HTTPS를 적용할 수 있는 실력을 갖추셨어요!
인증서 발급부터 설치, 자동 갱신, 리디렉션까지 제대로 설정해두면
사이트 신뢰도와 검색 엔진 점수까지 두 마리 토끼를 다 잡을 수 있답니다!

다음 시간에는 혼합 콘텐츠(Mixed Content) 에러 해결법이나
HSTS 정책을 적용해서 HTTPS를 강제하는 방법도 함께 다뤄볼게요.

궁금한 점은 언제든 댓글로 남겨주세요!
안전한 웹서비스 운영, 함께 만들어가요 💪
감사합니다 🙌

답글 남기기