Type and press Enter.

Let’s Encrypt SSL 인증서 설치 및 활용 팁 6가지

이번에 새롭게 서버를 구축하면서 Let’s Encrypt SSL 인증 과정을 다시 음미할 수 있었는데요. 이 과정에서 얻게 된 몇가지 팁을 공유해 봅니다.

1. Let’s Encrypt SSL의 점유율은 어느 정도나 될까?

요즘 Let’s Encrypt SSL이 무료이면서도 서비스도 나쁘지 않기 때문에 새로운 사이트 설계시 Let’s Encrypt SSL를 많이 적용하는데요. 그렇기에 Let’s Encrypt SSL의 점율이 상당히 높다는 생각을 했습니다.
그러나 w3techs.com에서 집계하는 통계를 보니 Let’s Encrypt SSL는 전체 웹사이트에서 겨우 0.09% 수준에 불과하다고 합니다.

여기에는 인증서 자체도 없는 사이트가 너무나 많기 때문에 0.09%가 작은 적은 아니지만 기대한만큼은 아니라는 생각이 듭니다.

▽ Let’s Encrypt SSL의 점유율 2018년 7월까지

Let’s Encrypt SSL의 점유율 2018년 7월까지

지난 2018년 3울 25일 Let’s Encrypt가 트윗으로 밝힌바에 따르면 2018년 3월 21일을 기해서 Let’s Encrypt 인정서를 적용해 운영하는 사이트가 7천만을 넘었다고 밝혔습니다.

2. Let’s Encrypt SSL 발급 시 standalone 방식, webroot방식 무엇이 좋을까?

Let’s Encrypt SSL 인증을 받는 방법에는 standalone 방식과 webroot방식이 있는데요.
standalone 방식은 서버 자체에서 인증을 시도하는 방식이고 webroot 방식은 외부 웹에서 사이트에 접속해 문제가 없는지를 확인해 이증을 주는 방식입니다.

아무리 비영기관이라고하지만 Let’s Encrypt이 서버 자체에서 작업을 진행하는 것을 민감하게 받아드리는 사람들은 webroot 방식을 선호합니다. 이 방식을 이용하면

  • 갱신 시 nginx 등을 중단시킬 필요없이 계속 서버가 작동하는 가운데 갱신 가능
  • 외부 웹을 통한 인증이므로 서버 정보가 노출될 가능성이 적다.

다만 이 방식은 직접 운영하는 도메인을 확인하므로 여러개의 도메인을 한 서버, 사이트에서 등록시키기는 어렵습니다. happist.com, www.happist.com과 같이 한가지 도메인 적용시만 안정적으로 작동합니다. ABC.com과 DEF.com을 동시에 인증이 어렵습니다.

반면 standalone은 프라이버시가 조그 약화(?) 가능성이 있다고들 주장되고, 갱신 시 nginx를 작동 중지 시켜야 하는 약점은 있지만 정말 수많은 도메인(100개까지라고 함)을 한꺼번에 인증 받을 수 있습니다.

1
2
3
cd certbot  # /certbot 디렉토리로 이동해 작업 시작
 
./letsencrypt-auto certonly —standalone -d happist.com -d www.happist.com  -d it.com -d www.it.com  -d  san.com -d www.san.com
cs

저는 고민끝에 standalone을 유지하기로 했습니다. webroot 방식은 도메인을 여러개 연결해 사용하는 경우 작동하지 않더군요.

3. Let’s Encrypt SSL 인증서는 몇번이나 설치할 수 있을까요?

서버를 세팅하다보면 본의아니게 서버 설치를 반복하게 되죠.
이런 저런 문제를 해결하고자 고민하다, 문제 원인을 못 잡으면 서버 자체를 다시 설치하는 경우도 있고, Let’s Encrypt SSL 인증서 설치 옵션 자체를 변경해 보다 완벽하게 설치하고 싶어 설치를 반복하기도 합니다.
설마 누가 라고 할 수 있지만, 서버를 설치하다보면 이런 저런 변수가 발생하고는 하죠. 제가 직접 그 경험을 했습니다.

여러 번 서버를 다시 설치하다 보니, 어느 순간 아래와 같은 메세지가 나오면서 발급이 안되더군요.

1
2
An unexpected error occurred:
There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for exact set of domains: test.com www.test.com
cs

이 메세지가 무엇일까 구글링해보니 Let’s Encrypt SSL인증서는 5회 발급으로 제한되어 있다고 합니다.
한다.
급 당황했는데 다행히 이전에 발급받은 Let’s Encrypt SSL인증서를 백업 받아 놓은 게 있어서 그것으로 대체해 사용해 문제를 풀 수 있었습니다.

서버 세팅 시 서버의 자양한 기능을 충분히 서리 및 테스트해보고, 충분하다싶으면 Let’s Encrypt SSL인증서를 발급받는게 좋을 듯 합니다.

4. 다른 서버에서 인증받은 인증서 사용 가능 여부

그러면 위에서처럼 5번이상 테스트하면서 더 이상 발급이 안된다면 난감하겠죠.
그럴때는 궁여지책으로 이전 서버에서 받은 인증서를 사용할 수 있을까요?

제가 테스트해 본 경우는 가능했습니다.
위에서 설명한대로 5번이 넘어가 더 이상 발급이 불가능해지자 궁여지책으로 이전 서버에서 백업 받았던 Let’s Encrypt SSL 인증서 관련 파일을 새로운 서버에 복사를 했는데요.

  • /etc/letsencrypt/live/**.com 아래에 privkey.pem, fullchain.pem, chain.pem, cert.pem의 4개 파일
  • /etc/letsencrypt/renewal 아래 **.com.conf 파일

SSL 인증서 삭제 또는 복사 위치

다만 이런 방식은 보안에 문제가 있을 수 있고, 인증 연장등은 제대로 작동하지 않은 불안정한 상태이므로 , 일정 기간이 지나 다시 설치 가능해지면 제대로 발급받는 게 좋습니다.

5. Let’s Encrypt SSL 인증서의 만료일자 확인하기

Let’s Encrypt SSL 인증서는 90일간 유효하기 때문에 90일이 다가기전에 인증서를 연장해야 합니다. 3개우러마다 서버에 접속해 수동으로 연장해주는 것은 서버만 전담으로 담당하는 사람에게는 쉽지만 일반인들에게는 쉽지는 않죠,

그래서 Let’s Encrypt SSL 인증을 자동으로 해주는 방법들이 많이 나왔는데요. 대부분 크론탭 기능을 이용하는 방법입니다.
그런데 이 크론탭이 가끔 작동되지 않는 경우도 있어서 여유를 두고 작동토록 설계가 필요합니다. Let’s Encrypt SSL 인증서는 한달전부터 인증 연장이 가능하므로 이를 이용해 일주일에 한번씩 체크토록 크론탭을 설정하곤 하죠.
이러는 와중에 도대체 제대로 잘 연장되었을까하는 걱정과 함께 확인을 하고 싶을 때는 아래와 같은 명령으로 확인 가능합니다.

1
echo | openssl s_client -connect [your-hostname]:443 2>/dev/null | openssl x509 -noout -dates
cs


그러면 아래와 같이 단 두줄의 결과가 나옵니다.

1
2
3
notBefore=Jul 23 18:30:10 2018 GMT
notAfter=Oct 21 18:30:10 2018 GMT
 
cs

이를 읽어 보면 아래와 같이 이해할 수 있습니다.

– 2018년 7월 23일에 Let’s Encrypt SSL 인증서가 연장되었으며,
– 2018년 10월 21일까지 Let’s Encrypt SSL 인증서는 유효함

## 6. Let’s Encrypt SSL 인증서 삭제 방법

Let’s Encrypt SSL 인증서를 다시 제대로 발급받거나 (흔치는 않겠지만) SSL인증을 더 이상 사용하지 않을 경우 인증서를 삭제할 필요가 있습니다.

이럴 경우 아래와 같은 명령어를 사용합니다.

1
2
3
4
rm rf /etc/letsencrypt/live/${DOMAIN}
rm rf /etc/letsencrypt/renewal/${DOMAIN}.conf
rm rf /etc/letsencrypt/archive/${DOMAIN}
 
cs

[워드프레스 Tips] Let’s Encrypt 무료 SSL인증서 발급 및 자동 갱신 방법