리눅스 서버 인증서 확인 - linugseu seobeo injeungseo hwag-in

# Connect Leni 💬

OpenSSL 인증서 정보를 살펴보자

Leni post with by Tistory 2019/05/03

SERVER: 서버주소를 입력하면 된다.

PORT: 각 프로토콜의 기본(default) 포트 번호는 각주로 달아놓았으니 참고 하도록하고 혹시 임의로 변경하였다면 변경한 포트 번호를 적어주어야한다.

운영중인 웹서버의 SSL1 인증서 정보 살펴보기

$ openssl s_client -connect SERVER:PORT

imaps2, pop3s3또한 위와 같은 방법으로 진행하면 된다.

인증서의 만료일자는 어떻게 될까?

$ echo "" | openssl s_client -connect SERVER:PORT | openssl x509 -noout -text

명령어 입력시 출력은 다음과 같은 형태를 띄게 된다.

noBefore=DATE         # 인증서 발급일

noAfter=DATE         #  인증서 만료일

로컬에 있는 인증서 파일을 확인할 수 있을까?

$ openssl x509 -in NAME -noout -text

인증서 전체가 아닌 만료일자만 보려면 -text 대신 -dates를 사용하면 된다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<SSL 인증서 만료일 확인방법>

1. SSL인증서 위치를 확인하기 위해 웹서버(nginx) 설정파일 확인

리눅스 서버 인증서 확인 - linugseu seobeo injeungseo hwag-in

2. 인증서위치로 이동

# cd /인증서위치

3. 만료일확인 명령어 (pem,crt 파일등 해당 명령어로 확인 가능)

3-1. 확인방법1

# openssl x509 -enddate -noout -in 인증서파일명

예시 이미지) 2020년 4월 24일 만료일인 인증서

리눅스 서버 인증서 확인 - linugseu seobeo injeungseo hwag-in

3-2. 확인방법2

해당 웹사이트로 접속하여 URL 옆 '자물쇠아이콘' 클릭 > '인증서' 클릭

하여 확인할 수도 있음.

예시 이미지) 네이버에서 사용하는 인증서의 만료일 확인

리눅스 서버 인증서 확인 - linugseu seobeo injeungseo hwag-in

리눅스 서버 인증서 확인 - linugseu seobeo injeungseo hwag-in

현재 적용된 SSL 인증서 유효기간 확인 

보통 대부분의 웹 서버는 리눅스(Linux)기반인데요. 요즘에는 SSL 인증서를 설치하지 않는 경우 브라우저에서 위험한 사이트라 취급받고 다른 대중적인 API와 연동이 불가능하기도 한데요. 그만큼 웹서버에 SSL인증서 설치는 이제 거의 필수라고 보면 되겠네요.

하지만 서비스가 운영되고 기간이 지남에 따라 SSL인증서의 만료기간을 보고 또는 전달받고 SSL인증서를 갱신(교체) 작업을 해주어야 할 경우가 생기는데요 이 때 현재 서버에 설치된 SSL인증서의 유효기간을 확인할 수 있는 명령어를 정리해보려고 합니다.

간단합니다.

(※ openssl 기준으로 작성되었습니다)


openssl s_client -connect 127.0.0.1 | openssl x509 -dates
명령어 결과
...
notBefore=Mar 24 00:00:00 2020 GMT
notAfter=Feb 17 23:59:59 2021 GMT
-----BEGIN CERTIFICATE-----
...

위의 명령어 결과 중간에 보면 notBeforenotAfter로 시작하는 구간에 출력되는 것이 바로 유효기간입니다.

notBefore='시작일(부터)'
notAfter='종료일(까지)'

(위의 결과를 해석하자면 2020년 3월 24일부터 2021년 2월 17일 23시 59분 59초(즉, 2021년 2월 18일)까지 인증서의 유효기간이라는 의미입니다)

리눅스 SSL 인증서 만료일 확인

어떤 사이트의 SSL 인증서 만료일을 확인하려면 어떻게 해야 할까? 기본적으로 웹 브라우저에서 확인이 가능하다. 예를 들어 www.google.co.kr의 SSL 인증서를 확인해보자.

인터넷 익스플로러 11의 경우 아래와 같이 확인이 가능하다.

구글 크롬의 경우 아래와 같이 확인이 가능하다.

그나저나 구글은 인증서 유효 기간을 꽤 짧은 90일 단위로 가져가나보다.

이처럼 PC에서는 웹 브라우저를 통해 간단히 SSL 인증서의 만료일을 확인할 수 있다.

그런데 리눅스 서버 관리자 입장에서는 어떨까? 현재 웹 서버에 설정된 SSL 인증서가 언제 만료될 것인지, 새로 설치하려고 하는 인증서가 과연 올바른 인증서인지... 미리 확인해보고 싶다면?

아래와 같이 openssl로 확인이 가능하다. 인증서 파일을 지정해주고 -text 해주면 인증서에 관한 많은 정보가 텍스트로 출력된다. 내용 중에 유효 기간에 대한 정보도 포함되어 있다.

[root@CentOS ~]# openssl x509 -in /app/apache/conf/server.crt -noout -text
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 9742171745232909342 (0x873325960774741e)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=XX, L=Default City, O=Default Company Ltd, CN=www.test01.com
        Validity
            Not Before: May 27 10:02:01 2014 GMT
            Not After : May 27 10:02:01 2015 GMT
        Subject: C=XX, L=Default City, O=Default Company Ltd, CN=www.test01.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
... 이하 생략 ...


유효 기간에 대한 정보만 간략하게 보려면 -dates를, 만료일만 보고싶다면 -enddate를 붙이면 된다.

[root@CentOS ~]# openssl x509 -in /app/apache/conf/server.crt -noout -dates
notBefore=May 27 10:02:01 2014 GMT
notAfter=May 27 10:02:01 2015 GMT
[root@CentOS ~]#
[root@CentOS ~]# openssl x509 -in /app/apache/conf/server.crt -noout -enddate
notAfter=May 27 10:02:01 2015 GMT


만약 방화벽 등의 이유로 인해 직접 PC에서 웹 브라우저로 접속하여 인증서를 확인해볼 수 없는 상황이라면 어떻게 해야 할까? 이 경우 해당 서버의 HTTPS 포트로 접속할 수 있는 다른 리눅스 장비에서 아래와 같이 openssl을 통해 확인이 가능하다.

[root@CentOS ~]# echo | openssl s_client -connect 192.168.0.101:443 2>/dev/null | openssl x509 -noout -dates
notBefore=May 27 10:02:01 2014 GMT
notAfter=May 27 10:02:01 2015 GMT