[보안] Let's Encrypt로 무료 https(ssl) 적용하기

in kr-dev •  8 months ago


https는 http의 보안프로토콜이죠. 이를 이용하기 위해서는 인증서라는 게 있어야 되는데 유료로 구입들을 하게 되죠. 무료로 배포를 해주는 고마운 사이트가 https://letsencrypt.org인 것입니다. ISRG (Internet Security Research Group) 에서 제공하는 서비스라고 하네요.

네 아마 이런게 있다고 하더라도 기업들은 무료 인증서는 안쓸 듯 합니다. 유료 인증서를 구입하면서 드는 책임배상보험이 있어서 그렇겠죠.

뭐... 우리야 같은 동일한 레벨의 알고리즘을 사용하는 것을 알고 있지만 기업들의 책임전가식 업무는 '내돈 아니니까 내가 책임만 안지면 돼'라는 사상이 밑바탕에 깔려있는거겠죠. 😊 아직 Let's Encrypt의 단점들이 남아있기도 하고요.

그렇다면 유료와 무료의 차이는?

네이벗의 보안 서명 알고리즘과 제가 운영중인 사이트인 cobot을 비교 확인해보았습니다.

네 둘다 sha256으로 동일하다는 것을 알수 있었습니다. 무료라고 무시하거나 불안해하실 필요가 전혀 없다는 이야기입니다. 사실 우리가 운영하는 블로그나 개인 사이트들에 굳이 https를 적용할 필요는 없지만 사이트의 신뢰도를 높이기 위해서겠죠.

요 자물쇠 모양을 달기 위해서~. 뭔가 있어보이기 위해서... 검색 사이트에서도 https를 지원하면 그 사이트의 점수를 높게 준다는 말을 본거 같으니까 적용해봅시다. 아... http/2의 기본 스펙 또한 https(ssl)이 기본이니 적용해서 http2 또한 적용해봅시다. http2는 꽤나 빠르답니다. 😎😎😎

무료이니 만큼 단점이 있습니다. 앞으로 개선될수도 있겠지만요~

단점

1. 인증서 유효기간은 90일이다.

  • 3개월에 한번씩 인증서 갱신을 해주어야 합니다.

2. 멀티도메인 지원이 안됩니다.

  • 서브도메인이라고도 하죠. cobot.co.kr을 받았는데 steem.cobot.co.kr을 쓰고 싶다면 steem.cobot.co.kr을 위한 인증서를 또 받아야 합니다. *(asterisk).cobot.co.kr 도메인이 안된다는거죠.

이런 불편함이 있지만 무료인데 뭐 어떻습니까. 더군다나 3개월 주기는 갱신까지 해주는 서비스가 있으니 한번 제대로 해 놓으면 손을 안대도 됩니다. 저...저는 운영서버가 tomcat이라 수동(메뉴얼) 갱신을 해주어야 하지만요. 😭

장점

모든 단점을 커버하는 무료라는 그것 하나!

20분안에 먹으면 공짜.gif
133075373250485.gif


그럼 설정을 해봅시다. 우분투 환경이지만 centos도 크게 다르지 않을듯 합니다.

1. git 프로젝트 복사

git clone https://github.com/letsencrypt/letsencrypt

2. let's encrypt 프로젝트로 이동

cd letsencrypt

3. let’s encrypt 실행

sudo ./letsencrypt-auto certonly --manual --email [이메일 주소] -d [사용할 도메인주소]

저의 경우는 이렇게 했습니다.

./letsencrypt-auto certonly --manual --email nhj7@naver.com -d steemalls.com

제 노닥거리는 우분투 서버로 실제 제가 구입한 도메인인 steemalls.com에 적용해보기로 해보죠!

쉽게 말해 도메인 소유를 확인하는거죠. 먼말인고 하니

http://steemalls.com/.well-known/acme-challenge/MUuEgsrDx6rk5GB5BCVRJbSYfUxJ9a9ZADXr_o_1lMI

위 url 경로에 파일이 있어야 하며...그 파일의 내용은 요런 텍스트가 되어야 한다는거죠.

MUuEgsrDx6rk5GB5BCVRJbSYfUxJ9a9ZADXr_o_1lMI.L6gvbjzqk4bM-R8DqdFXDqf99CT0w8zp-2l_NLfmfEc

그래도 무슨 말인지 모르겠다구요? 아래 순서로 작업하였습니다.

mkdir .well-known

cd .well-known

mkdir acme-challenge

cd acme-challenge

vi MUuEgsrDx6rk5GB5BCVRJbSYfUxJ9a9ZADXr_o_1lMI

파일 내용에 'MUuEgsrDx6rk5GB5BCVRJbSYfUxJ9a9ZADXr_o_1lMI.L6gvbjzqk4bM-R8DqdFXDqf99CT0w8zp-2l_NLfmfEc' 입력 후 저장

그리고 나서 윗 단계에서 엔터를 치면...

Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/steemalls.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/steemalls.com/privkey.pem
   Your cert will expire on 2018-02-16. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

축하한다고 니 인증서를 성공적으로 만들었다고 메세지가 나옵니다. ㅋㅋㅋ 적용해봅시다. 두가지의 파일이 생성 되었습니다. fullchain.pem과 privakey.pem 이죠. 이 경로를 따로 잘 저장해둡니다.

/etc/letsencrypt/live/steemalls.com/fullchain.pem
/etc/letsencrypt/live/steemalls.com/privkey.pem

가장 많이 사용하는 nginx 서버의 설정입니다.

nginx.conf를 찾아 아래내용을 추가했습니다.

         listen 8443 ssl default_server;
         listen [::]:8443 ssl default_server;
         ssl                  on;
         ssl_certificate      /etc/letsencrypt/live/steemalls.com/fullchain.pem;
         ssl_certificate_key  /etc/letsencrypt/live/steemalls.com/privkey.pem;
         ssl_session_timeout  5m;
         ssl_protocols  SSLv2 SSLv3 TLSv1;
         ssl_ciphers  HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers   on;


그리고 서비스 재시작 후 https://steemalls.com으로 접속하면 자물쇠가 뙇! 아 저의 경우 443으로 들어오는걸
8443으로 포워딩 되게 설정해서 8443으로 설정한 것입니다. 포워딩 안하시는 분들은 443으로 설정하세요.

물론 가장 많이 사용하는 nginx가 아니더라도 거의 대동소이하게 간단하게 적용하실 수 있습니다. 웹서버 별 설정은 letsencrypt.readthedocs.io 이곳에 잘 나와있네요.

그럼~ 여러분 다음 시간에 다시 만나요.


@sunshineyaya7님 예쁜 손글씨 감사합니다~ one two three one one 이라니 😆😆😆

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

어렵습니다.^^ 여러번 읽어야 겠습니다.

·

개발자나 웹서버 운영하시는 분, 전산쪽 공부하시는 분에게나 도움이 될법한 내용입니다. ^^

참 쉽네요 +_+ 역시 능력자...!! 보팅이 비루하니 리스팀이라도 하고갈게요^ㅎㅎㅎ

·

비루하다뇨 전혀~ 글구 적용이 정말 쉬운편입니다

두번읽고 갑니다.

·

두번 감사드립니다~^^

담당자로써는 3개월에 한번은 테스트목적으로만 ㅠㅠ

·

자동화 갱신도 있습니다만... 담당자분이 그런 수고를 했을때 인증서의 가격 십분의 일이라도 보상을 해주는 체계가 되었으면합니다. ㅎㅎ

·
·

그냥 사람좀 뽑아줬으면 ㅡㅜ

저도 어렵습니다.ㅠㅠ 나중에 도전해봐야겠어요~

·

오. 리뷰는 항상 환영입니당

오오 장단점까지 나열해주시니 완전 도움됩니다. 잘 쓸게요 감사합니다 ㅋㅋ 리스팀해가요!

·

ㅎㅎㅎ 감솨합니다~^^

'참쉽지요!'라고 설명하면
"네"라고 대답해야 하지만..
무슨소린지 하나도 모르겠습니다.
RSA256..그것만
"오 높은거네~" 하고 갑니다^^

·

넵 현재의 기술로도 128비트 수준의 암호도 뚫을수는 없지만 256비트로 권장되고 갈아타는 추세라고 합니당. 충분히 높죠 ^^

·
·

네..제가 인증회사에 투자하고 있어서 그부분은 항상 관심을 갖고 있습니다.
감사합니다.
기준이상의 보안알고리즘을 적용하시는게 결국 좋은 결과를 거두실거라 생각합니다^^

멀티도메인 이야기도 들었던 것 같습니다!
(서비스 시작이었는지, 곧 시작이었는지..)

steemkr.com도 이쪽에서 사용중입니다 :)

·

호... 멀티도메인과 3개월 제약도 그리 길진 않겠네요~^^