| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- github
- 쿼리
- elasticsearch
- java 오류
- 자바스크립트
- jQuery
- 이클립스 설정
- spring form
- spring 오류
- HTML
- db
- Java
- eclipse 설정
- 한글 깨짐
- 데이터베이스
- vscode
- Eclipse
- git
- 이클립스
- intellij
- 도커
- tomcat
- docker
- 엑셀
- 엘라스틱서치
- 자바 리스트
- 인텔리제이
- CSS
- JavaScript
- 형변환
Archives
- Today
- Total
개발노트
SSL · Apache · Tomcat 이해 & SSL 갱신 가이드 본문
반응형
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 |