Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HTML CSS Support
- 정보처리기사 시험장도 변경
- vue 로그인
- 경기도광명돼지집
- 시험장소변경
- eslint prettier차이
- vue.js 로그인
- 큐넷 필기시험장소 변경
- 서울근교두루치기
- 광명김치찌개
- 4대보험미가입 경력증명서
- 큐넷 사대보험
- 벤큐 EX2510
- vue eslint설정
- 큐넷 시험 변경
- 큐넷 폐업
- 큐넷 4대보험미가입
- 큐넷 4대보험
- BENQ EX2510S REVIEW
- 광명돼지집
- 벤큐 EX2510S 후기
- 큐넷 시험장소 변경
- vuetify 설치
- 경기도광명맛집추천
- 벤큐 EX2510S
- 큐넷 폐업 사대보험 미가입
- vue 설정
- 큐넷 사실확인서
- EX2510S음질
- vue prettier
Archives
- Today
- Total
코딩 발걸음 - 한발두발개발
Express Let's Encrypt 적용 및 Nginx설치, 설정 본문
728x90
1.Certbot 설치
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot
2. 인증서 발급 --standalone이용
--manual, --standalone, --webroot 등의 방식이 있음
플러그인 | 자동갱신 | 와일드카드 | 외부에서 .well-known 폴더 접근가능 여부 |
--manual | X | O | O (발급시 접근이 가능해야함.) |
--standalone | O (발급 및 자동 갱신시 서버 닫아야함) |
X | X |
--webroot | O (발급 및 자동 갱신시 서버 안닫아도됨) |
X | O (발급 및 자동갱신에 신경을 끄기 위해 항상 접근이 가능해야함.) |
공부해본 결과 위와 같은 특징이 있다.
자동갱신 필요(새벽에 자동갱신 시키면 될 듯 함)와 보안적으로 --standalone이 낫다고 판단하여 --standalone방식으로 설치.
certbot certonly --standalone -d 도메인.com -d www.도메인.com
*--standalone 방식으로 설치시 주의점은 certbot이 80포트를 사용해야 하기 때문에 80포트를 사용하고 있으면 안되고(웹서버를 중지해야함.) 웹서버 구동시 80포트로 작동이 되어야함. 8910으로 웹서버를 실행시키고 80 => 8910으로 포트포워딩 설정하여 사용중이 었는데 포트포워딩을 해제하고 80포트로 웹서버를 실행해야함.
#iptables 포트포워딩 확인
iptables -nL -t nat
#포트포워딩 설정 삭제 -D
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8910
#포트포워딩 설정 추가 -A
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8910
3. 정상 발행시 자동갱신 테스트
certbot renew --dry-run
#--dry-run 옵션은 자동갱신 모의 테스트이고 실제 갱신시에는
# certbot renew 을 사용
4. 자동갱신을 위한 .sh파일 생성
#크론탭이 실행하려는 자동갱신 명령어를 등록
vi /bin/letsencrypt.sh
#/bin/letsencrypt.sh의 내용
#!/bin/sh
kill -9 $(ps -ef | grep node | awk '{print $2}')
/usr/bin/certbot renew > /var/log/letsencrypt/le-renew.log
cd /app.js가 있는 웹서버 루트경로
nohup node app.js &
#작성후 /bin 경로에서 letsencrypt.sh를 입력하여 테스트로 실행해본다.
#서버가 꺼지는 것을 확인 뒤
#Cert not yet due for renewal 아직 renew를 실행할 수 있는 날짜가 되지 않았다는 출력이 나오고
#다시 서버가 실행되면 성공
5. 크론탭 등록
#크론탭 설정
crontab -e
# 00분 03시 1일이 될때마다 (매월) /bin/letsencrypt.sh실행
# 추가로 /bin/cronlog 디렉토리를 생성해주면 스크립트 출력 내용이 로그로 남는다.
# 로그로 남길 필요 없으면 > /bin/cronlog/radate_$(date +\%m\%d_\%H\%M).log 2>&1 & 은 생략가능
00 03 1 * * /bin/letsencrypt.sh > /bin/cronlog/radate_$(date +\%m\%d_\%H\%M).log 2>&1 &
+ Nginx 설치 및 설정
1.Nginx 설치
apt-get update
apt-get install nginx
2. 기존설정파일삭제
rm /etc/nginx/sites-enabled/default
rm /etc/nginx/sites-available/default
3. 서버의 이름으로 설정파일생성
vi /etc/nginx/sites-enabled/도메인명.conf
4. 도메인명.conf 내용
server {
listen 80;
server_name 도메인.co.kr www.도메인.co.kr;
//와일드카드 포함 사이트명을 빈칸으로 띄워서 나열한다.
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name 도메인.co.kr www.도메인.co.kr;
//와일드카드 포함 사이트명을 빈칸으로 띄워서 나열한다.
ssl_certificate /etc/letsencrypt/live/도메인.co.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인.co.kr/privkey.pem;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1000;
gzip_disable "MSIE [1-6]\."
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8089/; // 8089 => 웹 서버의 리슨포트로 적어준다.
proxy_redirect off;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
# Nginx 미사용시 웹 서버 포트를 80 으로 설정 하여 실행해야 했지만
# Nginx를 사용할 경우 80 포트를 Nginx에서 Listen해야 하기 때문에
# 웹서버 포트는 8089포트(혹은 다른포트)로 실행해준다.
5. 생성한 파일들에 대한 심볼릭링크 생성해준다.
ln -s /etc/nginx/sites-enabled/도메인.conf /etc/nginx/sites-available/
6. nginx 재시작
/etc/init.d/nginx restart
#웹서버 app.js는 실행되고 있어야한다.
7. 자동갱신을 위한 .sh파일 생성
#크론탭이 실행하려는 자동갱신 명령어를 등록
vi /bin/letsencrypt.sh
#/bin/letsencrypt.sh의 내용
#!/bin/sh
/etc/init.d/nginx stop
/usr/bin/certbot renew > /var/log/letsencrypt/le-renew.log
fuser -k 80/tcp
/etc/init.d/nginx start
#작성후 /bin 경로에서 letsencrypt.sh를 입력하여 테스트로 실행해본다.
#서버가 꺼지는 것을 확인 뒤
#Cert not yet due for renewal 아직 renew를 실행할 수 있는 날짜가 되지 않았다는 출력이 나오고
#다시 서버가 실행되면 성공