SSL 인증서 만료???

2019.04.11 08:12


언제나처럼 평화로운 어느 날 오후. 

홈페이지 로그인 페이지가 안보인다고 문의 전화가 한 통 왔다. 

이후 여기저기서 울리는 전화벨. 

'헉. 이거 또 무슨 장애가 난건가???'

전화를 몇 통 받다보니 홈페이지 SSL쪽에 문제가 생긴듯 하다. 

'SSL인증서 인증기간 만료가 다가와서 이번 달 초에 인증서 교체작업을 끝냈는데 왜 갑자기???'

팀 막내 직원에게 물었다. 

"인증서 교체 작업 다 끝낸거지??"

"네. 브라우저에서 인증서 유효기간 변경된거까지 확인했습니다"


그래. 나도 그렇게 전해들었던거 같은 기억이 살아난다. 

그러면 뭐가 문제지???



일단 웹서버에 접속해서 로그를 뒤져봤다. 

로그 저장 디렉토리에서 SSL관련 에러 로그를 확인해보니...

 

1
2
3
4
5
6
7
8
9
[web1:root] /web/HTTPServer/logs > tail -100 ssl_web_error_log.20190328 
 
[Thu Mar 28 12:50:41 2019] [error] [client ***.***.**.**:443] [110b5bc90] [7995438] SSL0221E: SSL Handshake Failed, Either the certificate has expired or the system clock is incorrect.  [***.***.**.**:13852 -> ***.***.**.**:443] [12:50:41.000923992] 0ms 
[Thu Mar 28 12:50:42 2019] [error] [client **.**.**.**] [110ad4f10] [7995438] SSL0221E: SSL Handshake Failed, Either the certificate has expired or the system clock is incorrect.  [**.**.**.**:47360 -> ***.***.**.**:443] [12:50:42.000736679] 0ms 
[Thu Mar 28 12:50:42 2019] [error] [client ***.***.***.***] [110ad4f10] [7995438] SSL0221E: SSL Handshake Failed, Either the certificate has expired or the system clock is incorrect.  [***.***.***.***:47361 -> ***.***.**.**:443] [12:50:42.000814508] 0ms 
.... 
 
(IP는 마스킹처리) 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 



이런 에러들이 잔뜩 있다. 그러니까 음.... 시스템 시간이 안 맞던지 인증서 유효기간이 만료되서 SSL 통신이 안된다는거잖아???

혹시나 하는 마음에 date 명령을 해봐도 시스템 시간은 잘 맞다. 



'인증서가 왜 문제지??? '

'인증서가 어느 디렉토리에 있더라???'

인증서가 저장된 디렉토리를 확인해보려고 httpd.conf 파일을 확인해보았다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[web1:root] /web/HTTPServer/conf > cat httpd.conf 
 
.... 
 
Listen 443 
 
NameVirtualHost *:443 
 
    KeyFile "/web/HTTPServer/SSL/key.kdb" 
    DocumentRoot "/htdocs/web_htdocs" 
    ServerName *******.co.kr   
    ErrorLog "|/web/HTTPServer/bin/rotatelogs /web/HTTPServer/logs/ssl_web_error_log.%Y%m%d 86400" 
    CustomLog "|/web/HTTPServer/bin/rotatelogs /web/HTTPServer/logs/ssl_web_access_log.%Y%m%d 86400" common 
 
..... 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter



이렇게 설정되어 있다. 이걸 보고 SSL이 저장된 디렉토리로 이동해서 조회해보았더니...

 

1
2
3
4
5
6
7
[web1:root] /web/HTTPServer/SSL > ls -alrt 
total 56 
drwxr-xr-x   24 root     system         4096 Aug 14 2017  .. 
-rw-r--r--    1 root     system          129 Aug 14 2017  key.sth 
-rw-r--r--    1 root     system           80 Aug 14 2017  key.rdb 
-rw-r--r--    1 root     system        15088 Aug 14 2017  key.kdb 
drwxr-x---    2 root     system          256 Aug 14 2017  . 
 


???????

왜 key파일이 2017년산이여??? 

얼마전에 교체했는데???



다시 막내에게 물었다. 

"여기 인증서가 2017년 인증서인데 어떻게 된거지???"

"어????  이상해요. 그 때 작업할 때 디렉토리에는 2017년 key파일 뿐 아니라 2015년 이전 파일들도 잔뜩 있었는데 지금은 파일이 3개밖에 없어요"

"2015년??? 그리고 그 이전년도 파일도 잔뜩???"


"아~"


갑자기 뒤통수를 맞은 느낌. 

심장 쫄깃쫄깃. 아드레날린 뿜뿜 뿜어대던 장애 상황에서 깨달음을 얻는 순간. 

'아. 그래. 그런건가보다'


얼른 다른 디렉토리로 이동해서 확인해보았다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
web1:root] /web/HTTPServer/SSL > cd /usr/IHS/SSL 
 
[web1:root] /usr/IHS/SSL > ls -alrt 
total 1272 
drwxr-xr-x   25 root     system         4096 May 11 2011  .. 
-rw-r-----    1 root     system           80 Jul 21 2011  key.crl 
-rw-r-----    1 root     system         1052 Jul 21 2011  csr.arm 
-rw-r-----    1 root     system          129 Oct 24 2012  key.sth.20121024 
-rw-r-----    1 root     system        70080 Oct 24 2012  key.kdb.20121024 
-rw-r-----    1 root     system        75080 Oct 21 2013  key.kdb.20131021 
-rw-r-----    1 root     system          129 Oct 21 2013  key.sth.20131021 
-rw-r-----    1 root     system       135080 Oct 08 2014  key.kdb.20141008 
-rw-r-----    1 root     system          129 Oct 08 2014  key.sth.20141008 
-rw-r-----    1 root     system       135080 Nov 26 2015  key.kdb.20151126 
-rw-r-----    1 root     system          129 Nov 26 2015  key.sth.20151126 
-rw-r-----    1 root     system       125080 Sep 11 2018  key.kdb.20180911 
-rw-r-----    1 root     system          129 Sep 11 2018  key.sth.20180911 
-rw-r-----    1 root     system          129 Mar 07 18:47 key.sth.20190307 
-rw-r-----    1 root     system        15088 Mar 07 18:48 key.kdb.20190307 
-rw-r-----    1 root     system           80 Mar 07 18:48 key.rdb.20190307 
drwxr-x---    3 root     system         4096 Mar 07 18:48 . 
-rw-r-----    1 root     system           80 Mar 07 18:51 key.rdb 
-rw-r-----    1 root     system          129 Mar 07 18:51 key.sth 
-rw-r-----    1 root     system        15088 Mar 07 18:51 key.kdb 



'그러네. 이 디렉토리에 여러가지 인증서들이 차곡차곡 잘 들어가있네. 하.하.하.'




사연인즉슨 이렇다. 

작년에 홈페이지를 리뉴얼하면서 웹서버의 아파치 버전을 업그레이드하게 되었다. 

기존 아파치 설치 위치는 /usr/IHS
신규 아파치 설치 위치는 /web/HTTPServer


막내에게 작업을 부탁하면서 예전에 만들어둔 작업보고서를 참고하도록 했는데 거기는 인증서 설치 위치가 /usr/IHS로 되어 있었다. 
거기다 인증서를 업로드했으니.... 

물론 작업보고서 앞 쪽에 httpd.conf를 확인하는 부분이 들어있었지만 바쁜 막내님은 작업하면서 그 부분은 건너뛰고 아래 /usr/IHS만 보았다 하신다

이게 어찌 막내 탓인가? 잘못된 참고자료를 건넨 주제에 작업 끝나고 제대로 확인도 하지 않은 내 탓이지. 에구.... 


그나저나. 막내가 작업하고 브라우저에서 인증기간 변경된거까지 확인했다고 하는데 그건 어떻게 된 사연인지 알아보니 
브라우저에서 보이는 인증서의 유효기간은 웹방화벽에 설치된 인증서의 유효기간이 보이는 거라고 한다. 

웹서버 인증서 교체는 웹방화벽이랑 동시에 작업했기 때문에 브라우저에서는 변경된 날짜로 보인거라구. ㅋㅋㅋ



그래서 또 알아봤다. 

서버에 설치된 SSL 인증서 유효기간 조회하는 명령어. 



1
2
3
4
5
6
7
8
9
10
 
[web1:root] / > openssl s_client -connect 127.0.0.1:443 | openssl x509 -dates 
 
... 
notBefore=Feb 14 00:00:00 2019 GMT 
notAfter=Apr 14 12:00:00 2021 GMT 
 
-----BEGIN CERTIFICATE----- 
... 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none; color:white">cs



이렇게 하니 SSL 인증서 유효기간 확인이 가능하다. 




또 하나 배웠다. 



또루아빠 뒤죽박죽 SM 돌파기 , , , ,