준호씨의 블로그
HTTPS 인증서 갱신 확인 방법: OpenSSL 명령어로 확인하기 본문
한동안 바쁘게 지내다 보니 서버관리를 제대로 못했는데요. 언젠가부터 서버가 제대로 돌고 있지 않았나 봅니다. ssh 접속도 안되어서 강제로 재시작해주었는데요. 홈페이지들은 다시 동작하기 시작했지만 인증서 갱신도 멈춰있었습니다. 그래서 인증서가 만료되었고, 웹브라우저에서 "Not Secure" 경고를 띄워주고 있었습니다.
그래서 인증서를 갱신해 주었는데요. `sudo certbot --apache` 명령어를 이용해서 갱신은 해 주었지만 여전히 웹브라우저에서는 캐시가 남아서인지 인증서 갱신 여부를 확인하기가 어려웠습니다.
HTTPS 인증서를 갱신한 후, 제대로 적용되었는지 확인하는 것은 매우 중요합니다. 인증서가 만료되었거나 갱신 과정에서 문제가 발생하면 사용자가 웹사이트에 접근하지 못하거나 보안 경고가 표시될 수 있습니다.
이번 포스팅에서는 CLI 도구인 OpenSSL을 사용하여 특정 도메인의 HTTPS 인증서를 확인하는 방법을 알아봅니다. 예제로 https://love.junho85.pe.kr 도메인을 사용합니다.
1. OpenSSL 설치 확인
OpenSSL은 대부분의 Linux 배포판에 기본적으로 설치되어 있습니다. 만약 설치되지 않았다면 아래 명령어로 설치할 수 있습니다.
Ubuntu/Debian
sudo apt install openssl
CentOS/RHEL
sudo yum install openssl
macOS
brew install openssl
2. HTTPS 인증서 정보 확인 명령어
인증서 세부 정보 확인
아래 명령어를 실행하면 HTTPS 인증서의 유효 기간, 발급 기관, 도메인 정보 등을 확인할 수 있습니다.
echo | openssl s_client -connect love.junho85.pe.kr:443 -servername love.junho85.pe.kr 2>/dev/null | openssl x509 -noout -dates -subject -issuer
출력 예시
notBefore=Nov 29 02:40:58 2024 GMT
notAfter=Feb 27 02:40:57 2025 GMT
subject= /CN=love.junho85.pe.kr
issuer= /C=US/O=Let's Encrypt/CN=E6
출력 내용 설명
- notBefore: 인증서의 유효 시작일.
- notAfter: 인증서의 만료일. 이 날짜 이후로 인증서는 더 이상 유효하지 않습니다.
- subject: 인증서가 적용된 도메인.
- issuer: 인증서를 발급한 기관(예: Let's Encrypt).
3. 만료일만 간단히 확인하기
인증서의 만료일만 빠르게 확인하고 싶다면 아래 명령어를 사용합니다.
echo | openssl s_client -connect love.junho85.pe.kr:443 2>/dev/null | openssl x509 -noout -enddate
출력 예시
notAfter=Jun 22 13:02:58 2024 GMT
4. 인증서 체인 확인
인증서 체인 구성이 제대로 되어 있는지 확인하려면 아래 명령어를 사용합니다.
echo | openssl s_client -connect love.junho85.pe.kr:443 -servername love.junho85.pe.kr
이 명령어는 서버에서 반환하는 전체 인증서 체인 정보를 보여줍니다. 만약 인증서 체인에 문제가 있다면, 이를 통해 문제를 파악할 수 있습니다.
출력 예시
CONNECTED(00000005)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = E6
verify return:1
depth=0 CN = love.junho85.pe.kr
verify return:1
write W BLOCK
---
Certificate chain
0 s:/CN=love.junho85.pe.kr
i:/C=US/O=Let's Encrypt/CN=E6
1 s:/C=US/O=Let's Encrypt/CN=E6
i:/C=US/O=Internet Security Research Group/CN=ISRG Root X1
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDhjCCAwugAwIBAgISBCqEDrMmG4uB/UgsRis0PwGfMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NjAeFw0yNDExMjkwMjQwNThaFw0yNTAyMjcwMjQwNTdaMB0xGzAZBgNVBAMTEmxv
dmUuanVuaG84NS5wZS5rcjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNXFdO9i
PmBuVHHBZuvwxvDoMgbIHRSyz0SUzBp5nQ+fl3ZRbcmlf+R1WJTJYbcpHiAdG1W2
5+Lg6x0F+v/gUaijggIUMIICEDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPSXgzW7
C/PYMmUfgxucGHO1Pu8nMB8GA1UdIwQYMBaAFJMnRpgDqVFojpjWxEJI2yO/WJTS
MFUGCCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL2U2Lm8ubGVuY3Iu
b3JnMCIGCCsGAQUFBzAChhZodHRwOi8vZTYuaS5sZW5jci5vcmcvMB0GA1UdEQQW
MBSCEmxvdmUuanVuaG84NS5wZS5rcjATBgNVHSAEDDAKMAgGBmeBDAECATCCAQQG
CisGAQQB1nkCBAIEgfUEgfIA8AB2AH1ZHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv
2Q6MLnm4AAABk3YAkjUAAAQDAEcwRQIhALm71Gxf6XhdFvNjFutB8Mu9iN60yqHo
LRzg40S8HRSbAiBHOzFxKXYFHaVaAUpBZEBN4uSf33ECX7o29Ft27Dr3igB2ABNK
3xq1mEIJeAxv70x6kaQWtyNJzlhXat+u2qfCq+AiAAABk3YAk5cAAAQDAEcwRQIh
AI22qsU2802tPBrkUtW7o4vatGVg22oxLl7Prdv9cPuTAiAzlvlWomoMb6CH10vD
9Y1xtkt0K5e2FZk8kyQnrce7fjAKBggqhkjOPQQDAwNpADBmAjEAlZUItddVOeJW
ufQGv5qI94WwmaR8cTTo4rg/ZjlPY4XX1/82zjzezyz4pfMaPnoXAjEAzK/620L8
gmUMlUHCMCyPrSp/PIDyeE350Wh3XQcAYTjy3oCpS4L4BG9ZJQqobBo0
-----END CERTIFICATE-----
subject=/CN=love.junho85.pe.kr
issuer=/C=US/O=Let's Encrypt/CN=E6
---
No client certificate CA names sent
Server Temp Key: ECDH, X25519, 253 bits
---
SSL handshake has read 2385 bytes and written 378 bytes
---
New, TLSv1/SSLv3, Cipher is AEAD-CHACHA20-POLY1305-SHA256
Server public key is 256 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.3
Cipher : AEAD-CHACHA20-POLY1305-SHA256
Session-ID:
Session-ID-ctx:
Master-Key:
Start Time: 1732852999
Timeout : 7200 (sec)
Verify return code: 0 (ok)
---
DONE
마무리
OpenSSL은 HTTPS 인증서 문제를 빠르게 확인할 수 있는 강력한 도구입니다. 위 방법들을 통해 인증서가 올바르게 갱신되었는지, 만료일은 언제인지, 인증서 체인은 제대로 구성되었는지 쉽게 확인할 수 있습니다. 인증서 갱신 후에는 반드시 이러한 검증 과정을 거쳐 웹사이트의 안정성과 신뢰성을 유지하세요! 😊
'개발이야기' 카테고리의 다른 글
GraphRAG 컨트리뷰터 7위 달성 기록 (0) | 2024.10.22 |
---|---|
Jupyter Lab을 원격 서버에서 실행하고 접속하는 방법 (0) | 2024.08.15 |
윈도우10에서 WSL2로 포트포워딩하는 방법 (0) | 2024.08.15 |
Google Drive에 draw.io로 다이어그램 그리기 (0) | 2024.08.15 |
맥에서 윈도우 WSL2 에 설치한 ollama 호출 성공 (0) | 2024.08.09 |