프로젝트를 배포하고 SSL 설정은 급한게 아니라 천천히 하려고 했지만 배포한 http에서 cookie에 저장이 안되는 이슈가 생겼다....이유는 https 적용할 경우 해결된다고 해서 부랴부랴 cerbot으로 SSL 적용을 했다 !
Let's Encrypt이란 ?
Let's Encrypt는 무료 SSL/TLS 인증서를 얻고 설치할 수 있는 인증 기관으로, 웹 서버에서 암호화된 HTTPS를 사용할 수 있도록 해줍니다. 또한 Certbot이라는 자동화 클라이언트를 제공하여 Apache 및 nginx에서 인증서를 획득하고, 설치하는 전체 프로세스가 자동화 되어있습니다.
참고로 Let's Encrypt 인증서의 경우 유효기간은 3개월(90일)로 기간이 짧습니다. 가장 큰 이유로는 짧은 주기의 자동 갱신을 권장하여 인증서가 무력화되더라도 그 피해를 최소화하기 위함이라고 합니다 !
인증서 설치하기
Certbot 설치하기
Certbot을 설치하고 nginx 연동을 위해 puthon2-chertbot-nginx도 설치합니다 !
// certbot 설치하기
$ sudo apt install certbot
// 웹서버(nginx) 플러그인 설치하기
$ sudo apt install certbot python3-certbot-nginx
nginx 중지하기
현재 구동되고 있는 웹 서비스를 잠시 중단하고 진행해야됩니다 !
$ sudo systemctl stop nginx
인증서 생성 및 발급하기
아래의 명령어를 통해 인증서를 설치할 수 있습니다 ! -d 인자 뒤에는 지정할 도메인을 입력해주면 됩니다 !
$ sudo certbot certonly --standalone -d yourdomain.com
인증서 발급을 요청했을 때 몇가지 확인 사항들이 나옵니다 !
1. 도메인 관리자의 이메일 주소를 입력합니다. 해당 메일을 통해 갱신 알림과 주요 소식들이 발송됩니다.
2. 이용에 관한 동의 및 인증 기관에 등록되는 사항에 관한 동의입니다 !
3. 제 3자 정보제공에 관한 동의입니다 (N 입력)
* 내용을 꼭 확인해보시고 다른 내용이 나왔을 경우 알맞게 대응하시면됩니다 !
인증서 발급 내역 조회하기
발급된 인증서의 세부적인 정보를 확인하려면 아래 명령어를 통해 확인할 수 있습니다 :)
$ sudo certbot certificates
nginx 환경설정
마지막으로 발급된 인증서를 통해 nginx에 설정을 해주어야 정상적으로 적용이되겠죠 !?
아래의 정보는 제 기준으로 작성되었고 참고해서 작성해주시면 됩니다 !
server {
if ($host = yourdomain) {
return 301 https://$host$request_uri;
}
listen 80;
server_name yourdomain;
location / {
root /usr/local/my-app/build;
index index.html index.htm;
try_files $uri $uri/ index.html;
}
return 404;
}
server {
server_name yourdomain;
listen 443 ssl http2;
server_name yourdomain www.yourdomain;
location / {
root /usr/local/my-app/build;
index index.html index.htm;
try_files $uri $uri/ index.html;
}
ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem;
}
설정을 마무리한 뒤 nginx을 실행 시켜주는거 잊으시면 안됩니다 !
$ systemctl start nginx
인증서 자동 갱신하기
인증서의 유효기간은 90일이기 때문에 만료 전 갱신이 필요합니다 !
아래 명령어를 통해 해당 문구를 크론탭 제일 마지막 줄에서 엔터 후 입력하시면됩니다.
$ sudo crontab -e
// 매달 1일 자정에 갱신 시도, 갱신 후 nginx 재시작
0 0 1 * * certbot renew --renew-hook="sudo systemctl restart nginx"
// 인증서 갱신 테스트
$ sudo certbot renew --dry-run
// 인증서 갱신
$ sudo certbot renew
// 인증서 만료일 확인
$ sudo certbot certificates
'개발공부 > Linux' 카테고리의 다른 글
[Linux] Eleasticsearch, Logstash 설치하기 (0) | 2024.05.20 |
---|---|
[Linux] Mac에서 기본 터미널로 외부 SSH 연결하기 (0) | 2024.05.08 |
[Linux] nginx와 React 빌드 및 연동하기 (0) | 2024.05.04 |
[Linux] Ubuntu에 Redis 설치하기 (0) | 2024.05.04 |
[Linux] Ubuntu에 Kafka 설치하기 및 실행하기 (0) | 2024.05.04 |
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!