#Docker#SSL#Nginx#Let's Encrypt#DevOps

WS(Web Server)에서 SSL 인증서 직접 발급과 적용

Dockerfile을 통한 웹서버 SSL 인증서 발급 및 HTTPS 적용

Docker 기반 Nginx 서버에 Certbot을 활용해 SSL 인증서를 발급하고 적용하는 과정

☑️ 사전 준비 체크리스트


항목내용
서버Jenkins에서 배포하는 Docker 기반 웹 서버
포트80, 443 모두 개방
DNSdmarketmall.com 도메인이 서버 IP를 가리키도록 설정
도구Certbot (Let's Encrypt)

☑️ 1. Jenkins 파이프라인에서 HTTPS 포트 열기


Jenkins Docker 파이프라인 구성 시 443 포트를 함께 노출.

docker run --name dmarket-front -p 80:80 -p 443:443 -d ${repository}/kwanza/dmarket-front:v${env.BUILD_NUMBER}

☑️ 2. Nginx 기본 설정 확인


nginx.conf에 HTTP(80) 수신과 도메인 설정을 추가

listen 80;
listen [::]:80;
server_name dmarketmall.com;

☑️ 3. Dockerfile에 Certbot 설치


인증서를 자동 발급하기 위해 필요한 패키지를 이미지에 포함.

RUN apk add python3 python3-dev py3-pip build-base libressl-dev musl-dev libffi-dev
RUN pip3 install pip --upgrade
RUN pip3 install certbot-nginx
RUN mkdir /etc/letsencrypt

* Certbot: Let's Encrypt 무료 인증서를 발급하고 주기적으로 갱신까지 처리해 주는 도구


☑️ 4. 서버 접속 및 컨테이너 상태 확인


  1. 프론트엔드 서버에 SSH로 접속.
  2. Nginx 컨테이너가 80, 443 포트로 정상 동작 중인지 확인.
docker ps


☑️ 5. 컨테이너 내부에서 Certbot 실행


docker exec -it dmarket-front /bin/sh
certbot --nginx -d dmarketmall.com
  • 이메일 입력 후 안내에 따라 Y를 선택하면 인증서가 생성된다.
  • Nginx 설정과 인증서 경로가 자동으로 매핑.


☑️ 6. 결과 확인


적용 전: HTTP 접속


적용 후: HTTPS 접속 및 안전 연결 표시