Haru Utils

TLS CHECK

SSL/TLS 인증서와 만료일을 확인할 때

SNI를 포함한 원격 인증서, 체인, 만료일과 로컬 파일을 비교해 인증서 장애를 진단합니다.
SSL 인증서certificate expiredopenssl s_clientTLS chain만료일 확인
환경OpenSSL · HTTPS 서비스
분류웹·보안
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • 인증서 만료 경고
  • hostname mismatch
  • unable to get local issuer

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

호스트명 불일치

접속한 도메인이 인증서 SAN에 포함되는지 확인하고 IP 주소로 직접 접속한 결과와 혼동하지 않습니다.

02

SNI에 따라 인증서가 다른 경우

같은 IP에서 여러 사이트를 운영하면 -servername 값이 빠진 검사 결과는 기본 virtual host 인증서일 수 있습니다.

03

일부 클라이언트만 체인 오류

서버가 leaf 인증서만 제공하거나 중간 인증서 순서가 잘못됐는지 -showcerts와 Verify return code로 확인합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

실제 서비스 인증서 확인

example.com을 실제 호스트로 두 곳 모두 바꿉니다. SNI가 중요합니다.

원격 인증서 요약
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates -fingerprint -sha256
결과 읽기

subject, issuer, notAfter, SHA-256 fingerprint를 기록합니다.

다음 판단

호스트명이 다르면 잘못된 virtual host 인증서일 수 있습니다.

2
조회시스템을 변경하지 않는 확인 단계

인증서 체인 검증

서버가 보내는 체인과 Verify return code를 봅니다.

전체 handshake
openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null
결과 읽기

Verify return code: 0 (ok)가 아니면 중간 인증서 누락 등을 확인합니다.

다음 판단

서버 설정의 fullchain 파일을 확인합니다.

3
조회시스템을 변경하지 않는 확인 단계

HTTP 클라이언트 관점 확인

리다이렉트와 TLS 협상 정보를 함께 봅니다.

curl 상세 연결
curl -Iv --max-time 15 https://example.com/
결과 읽기

인증서 오류와 HTTP 상태 오류를 구분합니다.

다음 판단

브라우저 경고와 같은 호스트를 검사했는지 확인합니다.

4
조회시스템을 변경하지 않는 확인 단계

로컬 인증서 파일 비교

경로를 실제 인증서 파일로 바꿉니다.

로컬 파일 요약
openssl x509 -in /path/to/fullchain.pem -noout -subject -issuer -dates -fingerprint -sha256
결과 읽기

원격 fingerprint와 로컬 파일이 다르면 설정이 아직 반영되지 않았을 수 있습니다.

다음 판단

웹 서버 설정이 이 파일을 참조하는지 확인합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

문법 검사 후 반영·재검증

웹 서버 설정 검사가 성공한 경우에만 reload합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
NGINX 설정 확인
sudo nginx -t
NGINX 재로딩
sudo systemctl reload nginx
원격 만료일 재확인
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
결과 읽기

원격 notAfter와 fingerprint가 새 인증서로 바뀌었는지 확인합니다.

다음 판단

자동 갱신 로그와 다음 갱신 일정을 점검합니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기