SSL 인증서를 설치한 후에는 올바르게 작동하는지 확인해야 합니다 — 올바른 인증서, 완전한 체인, 최신 TLS, 오류 없음. 각 확인에 가장 적합한 도구를 소개합니다.
온라인 도구
SSL Labs Server Test (가장 포괄적)
URL: ssllabs.com/ssltest
SSL 테스트의 업계 표준입니다. 도메인을 입력하면 A+부터 F까지 등급이 매겨진 상세 보고서를 받을 수 있습니다.
확인하는 항목:
- 인증서 유효성 및 체인 완전성
- 프로토콜 지원 (TLS 1.0/1.1/1.2/1.3)
- 암호화 스위트 강도 및 순서
- 알려진 취약점 (POODLE, Heartbleed, DROWN, ROBOT)
- HSTS 설정
- OCSP 스테이플링
- DNS CAA 레코드
- 인증서 투명성
목표: A+ 등급 (TLS 1.2+, AEAD 암호화, 유효한 체인, 긴 max-age의 HSTS 필요)
사용 시기: 초기 설정 후, 설정 변경 후, 정기적으로 (매월).
SSL Shopper SSL Checker
URL: sslshopper.com/ssl-checker
인증서 유효성과 체인에 초점을 맞춘 빠른 확인.
확인하는 항목:
- 인증서 올바르게 설치됨
- 체인 완전성 (중간 인증서 포함)
- 인증서와 도메인 일치
- 만료일
사용 시기: “작동하나?” 빠른 확인 — SSL Labs보다 빠름.
crt.sh (인증서 투명성 검색)
URL: crt.sh
도메인에 대해 발급된 모든 인증서를 인증서 투명성 로그에서 검색합니다.
사용 시기: 무단 인증서 모니터링, 인증서가 로그에 기록되었는지 확인, 발급 이력 확인.
Why No Padlock
URL: whynopadlock.com
특정 페이지에서 혼합 콘텐츠를 스캔합니다 — HTTPS 페이지의 HTTP 리소스.
사용 시기: 유효한 인증서가 있음에도 자물쇠에 경고가 표시되거나 없는 경우.
명령줄 도구
OpenSSL로 빠른 확인
# HTTPS가 작동하는지 확인
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Verify return code"
# 0 (ok) = 양호
# 인증서 만료일 표시
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate
# 전체 인증서 세부 정보 표시
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text
# 협상된 TLS 버전 확인
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Protocol"
# 특정 TLS 버전 테스트
echo | openssl s_client -connect yourdomain.com:443 -tls1_3 2>/dev/null | grep "Protocol"
curl로 빠른 HTTPS 테스트
# 기본 HTTPS 확인
curl -I https://yourdomain.com
# 인증서 정보 표시
curl -vI https://yourdomain.com 2>&1 | grep -E 'subject:|issuer:|expire'
# HTTP에서 리다이렉트 확인
curl -ILs http://yourdomain.com | grep -E '^HTTP|^Location'
nmap으로 암호화 목록 확인
nmap --script ssl-enum-ciphers -p 443 yourdomain.com
서버가 지원하는 모든 암호화 스위트를 TLS 버전별로 그룹화하여 보여줍니다.
무엇을 언제 확인해야 하나
| 시기 | 확인 사항 | 도구 |
|---|---|---|
| 인증서 설치 후 | 체인 완전성, 도메인 일치 | SSL Shopper (빠른 확인) |
| 설정 변경 후 | 전체 감사 (등급, 암호화, 취약점) | SSL Labs (철저한 확인) |
| 매월 | 만료 임박 여부 | 모니터링 스크립트 |
| 마이그레이션 후 | 혼합 콘텐츠 | Why No Padlock |
| 지속적으로 | 무단 인증서 | crt.sh / CT 모니터링 |
| 오류 디버깅 | 연결 세부 정보 | OpenSSL s_client |
SSL Labs 등급 해석
| 등급 | 의미 | 일반적인 문제 |
|---|---|---|
| A+ | 우수 | 긴 max-age의 HSTS 포함 |
| A | 양호 | HSTS 누락 또는 짧은 max-age |
| B | 괜찮지만 개선 필요 | 오래된 암호화 스위트, TLS 1.0/1.1 활성화 |
| C | 약한 설정 | 취약한 암호화, 순방향 비밀성 없음 |
| F | 심각한 문제 | 알려진 취약점, 만료된 인증서 |
| T | 인증서 신뢰 불가 | 자체 서명, 잘못된 도메인, 불완전한 체인 |
자주 묻는 질문
얼마나 자주 테스트해야 하나요?
SSL 관련 변경 후마다, 그리고 모니터링의 일환으로 최소 매월. SSL Labs 결과는 몇 시간 동안 캐시됩니다 — 새로운 스캔을 강제하려면 &clearCache=on을 추가하세요.
SSL Labs를 사용하는 것이 안전한가요? 내 사이트가 노출되나요?
네, 안전합니다. SSL Labs는 모든 브라우저가 하는 것과 동일한 방식으로 서버에 연결합니다. 아무것도 수정하거나 취약점을 노출하지 않습니다. 결과는 기본적으로 공개됩니다 — 비공개를 원하면 “Do not show the results on the boards”를 체크하세요.
내 사이트가 SSL Labs에서 A를 받았는데 여전히 “안전하지 않음”이 표시돼요
SSL Labs 등급은 서버의 TLS 설정을 다룹니다. 브라우저의 “안전하지 않음”은 혼합 콘텐츠(Why No Padlock으로 확인), HTTP에서 리다이렉트 누락, 또는 HTTP로 직접 접속하는 것이 원인일 수 있습니다. 이는 페이지 수준의 문제이지 서버 수준의 문제가 아닙니다.
SSL 테스트를 자동화할 수 있나요?
SSL Labs에는 무료 API가 있습니다: api.ssllabs.com/api/v3/analyze?host=yourdomain.com. CI/CD 또는 모니터링 파이프라인에 통합할 수 있습니다. 더 간단한 확인은 cron 스크립트에서 OpenSSL 명령어를 사용하세요.