-
nginx에 무료 ssl 자동 갱신 명령어 묶음 (feat. let's encrypt)Infra/linux 2024. 3. 8. 14:38
OS 환경은 ubuntu이다.
SSL 적용
1. letsencrypt 설치
$ sudo apt update $ sudo apt-get install letsencrypt -y
2. root 계정 전환 -> nginx 정지
$ sudo su - $ cd /root $ sudo service nginx stop
3. 인증서 생성
-d 뒤에 본인의 도메인을 입력하면된다. (서브도메인이 있는 경우 뒤에 개수만큼 추가하면 됨)
인증시 email을 입력하고 모두 'Y'를 한다.
성공시 축하 메시지가 나온다.
$ sudo certbot certonly --standalone -d mydomain.com -d www.mydomain.com -d test.mydomain.com
4. 파일을 확인한다.
파일 위치 :
/etc/letsencrypt/live/mydomain.com/
/etc/letsencrypt/live/www.mydomain.com/
/etc/letsencrypt/live/test.mydomain.com/
5. nginx 재시작
$ sudo service nginx restart
6. nginx conf에 ssl 설정을 해준다.
파일 위치 : /etc/nginx/sites-available/default
도메인 수만큼 server {}를 추가하면 된다.
나머지 2개는 생략 하겠다.
나의 경우 https(433)으로 들어온 요청을 :3000 포트로 전달한다.
server { # SSL configuration # listen 443 ssl http2; listen [::]:443 ssl http2 ; client_max_body_size 50M; ssl_certificate "/etc/letsencrypt/live/mydomain.com/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/mydomain.com/privkey.pem"; ssl_dhparam "/etc/nginx/ssl/dhparams.pem"; server_name mydomain.com; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:3000; } }
만약 /etc/nginx/ssl/dhparams.pem이 없다면 아래 명령어로 만들어 주자.
$ sudo openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048
7. 끝으로 nginx를 다시 재시작 한다.
$ sudo service nginx restart
문제가 없다면 정상적으로 적용된 것이다.
SSL 자동 갱신
1. 쉘 스크립트 파일 생성
$ cd /bin $ sudo nano letsencrypt.sh
#!/bin/sh sudo service nginx stop sudo certbot renew > /home/pi/Desktop/le_renew.log fuser -k 80/tcp sudo service nginx start
2. 실행 권한 부여
$ sudo chmod +x letsencrypt.sh
3. 크론탭 오픈
$ sudo crontab -e
4. 배치잡 추가
ssl 기한이 90일이기 때문에 90일마다 실행되도록 해준다.
0 0 */90 * * letsencrypt.sh
5. cron 재실행
$ sudo service cron restart
'Infra > linux' 카테고리의 다른 글
[linux] ssh - timeout 발생 방지 방법 (0) 2021.06.01 [linux] ubuntu(우분투)에 외장하드 마운트 연결 시키는 법 (0) 2021.01.15 [solution] npm install node gyp ERR! stack Error: `make` failed with exit code: 2 (0) 2020.02.05 [ssh] (Solution) WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) 2019.12.13 [shell script] How to write password of sudo on one command line (0) 2019.11.14