개발노트

SSL · Apache · Tomcat 이해 & SSL 갱신 가이드 본문

Programming/Server

SSL · Apache · Tomcat 이해 & SSL 갱신 가이드

dev? 2026. 1. 20. 14:34
반응형

1️⃣ SSL 개념 이해

1-1. SSL이란 무엇인가?

SSL은 “서버의 신분을 증명하고, 통신 내용을 암호화하는 기술”이다.

  • HTTPS = HTTP + SSL
  • 브라우저 ↔ 서버 간 통신을 암호화
  • 사용자는 접속한 서버가 진짜 서버인지 인증서를 통해 확인

그래서 URL이

  • http:// ❌
  • https:// ⭕ 로 바뀐다

1-2. SSL이 없으면?

  • 로그인 정보가 평문으로 전송됨
  • 중간자 공격 가능
  • 브라우저에 “안전하지 않음” 경고 표시

➡️ 운영 서비스에서는 SSL 필수


1-3. SSL 인증서 구성 요소

✅ 인증서 (Certificate)

  • 확장자: .crt, .pem
  • 서버의 신분증
  • 공개되어도 문제 없음

✅ 개인키 (Private Key)

  • 확장자: .key
  • 인증서와 1:1로 짝
  • 절대 외부 유출 금지

✅ 체인 인증서 (Chain / Intermediate)

  • 중간 인증기관(CA) 인증서
  • 브라우저 신뢰 검증용
  • 누락 시 “신뢰할 수 없음” 오류 발생 가능

1-4. SSL “갱신”이란?

❌ Apache 설정 구조 변경
❌ Tomcat 설정 변경

기존 인증서 파일을 새 인증서 파일로 교체하는 작업


2️⃣ Apache ↔ Tomcat 구조 이해 (핵심)

2-1. 전체 구조

사용자(브라우저)
   ↓ HTTPS (443)
Apache (웹서버, SSL 담당)
   ↓ HTTP (8080)
Tomcat (자바 WAS)

2-2. 역할 분리

구분ApacheTomcat

구분 Apache Tomcat
HTTPS / SSL 처리
인증서 관리
도메인 처리
자바 비즈니스 로직

👉 SSL은 Apache 책임
👉 Tomcat은 SSL을 모른다


2-3. 중요한 결론

  • SSL 갱신 작업 = Apache 작업
  • Tomcat 재시작 ❌
  • Apache graceful reload만 수행

3️⃣ *:80 / *:443 개념 이해

3-1. 자주 하는 오해

“*:80이랑 *:443가 보이는데 서버가 두 개인가요?”


3-2. 실제 의미

  • * : 모든 IP
  • 같은 서버
  • 같은 Apache
  • 포트만 다름

표기의미

*:80 HTTP 요청
*:443 HTTPS 요청 (SSL 적용)
*:8080 내부/API 또는 WAS 연계용

포트 개수 = 시스템 개수 ❌
시스템 개수는 VirtualHost(ServerName) 기준


4️⃣ Apache 설정 구조 (Ubuntu 기준)

/etc/apache2/
├── apache2.conf        # 메인 설정 (Include 역할)
├── ports.conf          # 포트 정의
├── sites-available/    # 가상호스트 원본
├── sites-enabled/      # 실제 서비스 중인 설정 ⭐
├── mods-enabled/       # 로드된 모듈
└── conf-enabled/       # 공통 설정

👉 실제 운영 중인 설정은 무조건 sites-enabled


5️⃣ *:80 / *:443 확인 명령어 & 점검 순서 (중요)

5-1. 왜 이걸 먼저 확인해야 하나?

SSL 갱신 전 반드시 확인해야 할 질문:

  • 이 서버에 몇 개의 서비스가 떠 있는가?
  • SSL 교체 시 어디까지 영향이 가는가?

👉 이 판단의 출발점이 Apache 포트/가상호스트 확인


5-2. 1단계: Apache 실제 동작 기준 확인

apachectl -S

이 명령어의 의미

  • Apache가 실제로 로드한 설정만 출력
  • 비활성화된 설정은 나오지 않음
  • 운영 상태 기준 “정답”

출력 예시

*:80
  도메인 주소
  (/etc/apache2/sites-enabled/000-default.conf:1)

*:8080
  도메인 주소
  (/etc/apache2/sites-enabled/api-default.conf:1)

*:443
  도메인 주소
  (/etc/apache2/sites-enabled/namusales-ssl.conf:1)

5-3. 출력 해석 방법

  • *:443 아래에 보이는 ServerName들
    SSL이 적용된 실제 서비스 목록
  • SSL 교체 시 영향 범위 = *:443 아래 전부

5-4. 2단계: SSL 설정 파일 위치 확인

(/etc/apache2/sites-enabled/파일명-ssl.conf:1)

의미:

  • Apache가 실제 사용하는 SSL 설정 파일
  • 이 파일에:
    • 도메인
    • 인증서 경로
    • Tomcat 연결
      전부 들어 있음

5-5. 3단계: 포트 정의 보조 확인

cat /etc/apache2/ports.conf

예:

Listen 80
Listen 443

👉 “열 수 있는 포트” 선언
👉 실제 사용 여부 판단은 apachectl -S 기준


5-6. Apache 설정 Include 구조 확인

cat /etc/apache2/apache2.conf

중요 구문:

IncludeOptional sites-enabled/*.conf

👉 sites-enabled에 있어야 실제 서비스 중


🔎 Apache 구조 확인 순서 요약

1️⃣ apachectl -S
2️⃣ *:443 아래 서비스 개수 확인
3️⃣ SSL 설정 파일 위치 확인
4️⃣ 인증서 경로 확인
5️⃣ SSL 갱신 영향 범위 판단


6️⃣ SSL 인증서 위치 & 사용 여부 확인

6-1. Apache가 참조하는 인증서 위치

grep -E "SSLCertificate(File|Key|Chain)" \
/etc/apache2/sites-enabled/파일명-ssl.conf

6-2. 인증서 내용 확인

openssl x509 -in /etc/ssl/certs/파일명.crt -noout -subject -dates

확인 포인트:

  • 도메인(CN / SAN)
  • 만료일

6-3. 실제 서비스 적용 여부 확인

openssl s_client -connect 도메인.com:443 \
-servername 도메인.com \
| openssl x509 -noout -dates

➡️ 6-2와 같으면 실제 사용 중


7️⃣ SSL 갱신 절차 (신입 필수)

1️⃣ 기존 인증서 만료일 확인
2️⃣ 기존 인증서 백업
3️⃣ 새 인증서 파일로 교체
4️⃣ Apache 설정 문법 검사
5️⃣ Apache graceful reload
6️⃣ 외부에서 적용 확인


✅ 한 줄 요약

“SSL은 사용자를 안심시키기 위한 암호화 + 신원증명이며,
이 구조에서는 Apache에서 시작해서 Apache에서 끝난다.”

 

반응형

'Programming > Server' 카테고리의 다른 글

Window 방화벽 포트 허용 (인바운드)  (0) 2024.07.05
cookie / session  (0) 2022.07.24
Apache / Tomcat 개념  (0) 2022.05.26
URL 구조  (0) 2022.05.24
GET 방식 / POST 방식  (0) 2022.05.23