요즘 대부분의 웹서버는 https 통신을 합니다. 이제는 선택이 아닌 필수 인것 같네요 제가 서버를 구축하게 된 직접적인 원인도 https 설정을 하기 위함입니다. nginx 에 https 서비스를 구성하기 위해서는 도메인이 필요합니다. 도메인이 준비되면 certbot을 통해서 무료 ssl 인증서 적용 및 http/2 적용이 가능한데요 무료 도메인 가입부터 nginx 에 셋팅하는 부분까지 진행해 보겠습니다.
로그인 후 원하는 도메인을 입력하고 엔터키를 클릭한후 사용하고자 하는 도메인에서 Get it now! 버튼을 클릭하여 선택합니다. 그리고 나서 Checkout 버튼을 클릭합니다.
Use DNS 버튼을 클릭하고 Use Freenom DNS Service를 선택한후 aws free tier의 퍼블릭 ipv4 주소를 입력하고 Continue 버튼을 클릭합니다.
도메인 주문이 완료되었습니다.
My Domain 에서 주문한 도메인 확인이 가능합니다. ::: tip goodsaem.ml 무료 도메인을 2개 신청했는데 2번째꺼는 어떤이유인지 mydomain에 추가 되지 않아 goodsaem.ml로 셋팅 진행하겠습니다. :::
2. Diffie-Hellman 키생성
https 인증서를 받기 위해서는 키가 필요합니다. 이 키 생성은 디피와 헬만이 1976년도에 발표한 비밀키 교환 방식의 알고리즘을 이용하여 생성합니다.이 알고리즘을 이용하여 4096 bit의 키를 생성하겠습니다. 아래 명령어로 키를 생성하는데 대략 10분정도 소요 되었습니다. 이키를 이용해서 https에서 비밀키를 교환하여 안정한 https 통신을 할수 있으므로 반드시 진행해야 되는 사항입니다.
enerating DH parameters, 4096 bit long safe prime, generator 2 This is going to take a long time ...............................................................
3. 무료인증
Let’s Encrypt 는 사용자에게 무료로 SSL/TLS 인증서를 발급해 주는 기관 입니다. 한번 발급 받으면 90일간 사용이 가능하며 만료 30일전에 메일로 내용을 통보하면 그때 다시 갱신이 가능합니다. 인증서 발급은 certbot certbot-auto 를 이용하여 발급 및 갱신합니다.
Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: goodsaem.ml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): Obtaining a new certificate Performing the following challenges: http-01 challenge for goodsaem.ml Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/default.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/goodsaem.ml/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/goodsaem.ml/privkey.pem Your cert will expire on 2021-06-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot 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
제되로 인증서 발급이 되었는지 확인해 보겠습니다. domain에 보시면 goodsaem.ml 도메인이 등록되어 있습니다. 또한 8,9 라인에 fullchain.pem 키와 privkey.pem 파일이 정상 생성되었음을 확인할수 있습니다.
6,8,9 라인
1 2 3 4 5 6 7 8 9 10
Saving debug log to /var/log/letsencrypt/letsencrypt.log
이제 실제로 https 로 접속을 시도해 보겠습니다. https://goodsaem.ml/info.php https 프로토콜을 이용하여 설정한 도메인으로 접속하니 아래 그림과 같이 정상적으로 화면이 나왔습니다. 보안 오류 같은거 없이 ^^ 대 성공입니다. 자물쇠 모양을 더블클릭하세요