--- title: openssl — 인증서와 TLS 확인 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 인증서 내용·만료일 확인과 TLS 연결 점검에 쓰는 도구. tags: 프로그램, 웹 서버 운영, openssl --- **💬 "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 기준이라 로컬 시각과 차이가 날 수 있습니다. ## 실제 실행 화면 로컬 인증서의 주체·유효기간과 만료 임박 여부를 확인한 결과입니다. ![openssl 명령어 실행 결과: 인증서 정보와 만료](https://games.cursorai.co.kr/assets/openssl-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/webserver/openssl.html