Let’s Encrypt 와 Certbot을 이용한 ssl 무료 인증서를 발급 받는 방법에 대해서 알아 보겠습니다.
1. 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 ...............................................................
2. Let’s Encrypt + Certbot 무료인증
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 도메인이 등록되어 있습니다. 또한 9,10 라인에 fullchain.pem 키와 privkey.pem 파일이 정상 생성되었음을 확인할수 있습니다.
1,7,9-10 line
1 2 3 4 5 6 7 8 9 10 11
ubuntu@goodsaem:~$ sudo certbot certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log
아래 명령어로 샘플 프로젝트를 실행하면 foreground 로 명령어가 실행됩니다. ctrl + c 키를 눌러서 종료하면 프로세스가 종료됩니다. 명령어를 실행하고 나서 로그아웃을 하더라도 명령어가 계속 실행된 상태로 있을려면 background 로 명령어가 실행되어야 합니다.
1
java -jar hello-0.0.1-SNAPSHOT.war
background로 실행하는 프로세스를 만들기 위해 아래와 같이 start.sh 파일을 생성합니다.
1
ubuntu@goodsaem:~$ vi start.sh
nohup을 사용하여 출력을 nohup.out으로 보내고 명령어를 실행한다음 & 같이 입력하여 백그라운드에서 실행 되게 만듭니다.
1
nohup java -jar hello*.war &
그리고 나서 start.sh 실행 권한을 부여 합니다.
1
ubuntu@goodsaem:~$ chmod +x start.sh
stop 스크립트를 작성합니다.
1
ubuntu@goodsaem:~$ vi stop.sh
아래와 같이 입력합니다.
1 2 3 4 5 6 7 8 9 10
#!/bin/sh
PID=`ps -ef | grep java | grep war | awk '{print $2}'` if [ -n "$PID" ] then echo "=====spring is running at" $PID "Shutdown spring now" kill -9 $PID else echo "=====spring isn't running=====" fi