openssl — 인증서와 TLS 확인
Linux / 웹 서버 운영 / openssl.html
💬 "openssl 명령어"
openssl은 인증서 정보와 TLS 연결을 직접 확인합니다. 만료·체인 문제 진단에 필수입니다.
로컬 인증서 파일도, 원격 서버의 TLS 핸드셰이크도 볼 수 있습니다.
- 개념: 인증서/키를 다루고 TLS 연결을 점검합니다.
- x509: 인증서 내용과 만료일을 출력합니다.
- s_client: 원격 TLS 연결을 직접 확인합니다.
- 확인 항목: 주체, SAN, 유효기간, 체인, 프로토콜입니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
x509 -noout -dates | 인증서 유효기간만 확인 |
x509 -noout -subject -issuer | 주체/발급자 확인 |
s_client -connect | 원격 TLS 연결 확인 |
-servername <도메인> | SNI를 지정해 가상호스트 인증서 확인 |
필수 명령어 조합 3가지
openssl x509 -in /etc/nginx/ssl/site.crt -noout -dates— 로컬 인증서 만료일 확인echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates— 원격 인증서 만료일 확인openssl x509 -in site.crt -noout -subject -issuer -ext subjectAltName— 주체·발급자·SAN 확인
💬 "이걸로 삽질 줄이는 방법 하나 알려줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 로컬 인증서 확인
서버에 설치된 인증서 만료일을 봅니다.
openssl x509 -in /etc/nginx/ssl/site.crt -noout -dates
2단계 · 원격 확인
실제 서비스되는 인증서를 확인합니다.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject -dates
3단계 · 만료 관리
만료가 임박하면 갱신 절차를 진행합니다.
openssl x509 -in /etc/nginx/ssl/site.crt -noout -checkend 2592000
실무에서는 이렇게 씁니다
1. 인증서 만료 경고 대응
상황 — 모니터링이 인증서 만료 30일 전을 알렸습니다.
openssl x509 -in /etc/nginx/ssl/site.crt -noout -checkend 2592000
결과 — 30일 내 만료면 경고 메시지가 출력됩니다.
포인트 — 만료 전 자동 갱신(certbot timer)이 동작하는지도 함께 점검합니다.
2. 도메인별 인증서 확인
상황 — 여러 도메인이 한 IP를 쓰는데 특정 도메인만 인증서 오류입니다.
echo | openssl s_client -connect 203.0.113.24:443 -servername shop.example.com 2>/dev/null | openssl x509 -noout -subject
결과 — SNI로 요청한 도메인의 인증서가 반환되는지 확인합니다.
포인트 — SNI 미지정 시 기본 인증서가 반환되어 오해할 수 있습니다.
주의할 점
- s_client는 진단용입니다. 실제 브라우저 검증(체인·SAN)과 다를 수 있습니다.
- 개인키 파일은 노출되지 않도록 권한을 관리합니다.
- 만료 확인은 UTC 기준이라 로컬 시각과 차이가 날 수 있습니다.
실제 실행 화면
로컬 인증서의 주체·유효기간과 만료 임박 여부를 확인한 결과입니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.