🌏 SSL 인증서란?
해당 도메인이 https로 인증을 받기 위한 인증서입니다.
인증서를 받기 이전에 해당 도메인으로 들어가보면 아래와 같이 https로 접근이 불가함을 볼 수 있습니다.
![](https://blog.kakaocdn.net/dn/YJgKo/btsKw6WwgNu/4wurlyH5SaqKnMlGSo3qZK/img.png)
SSL 인증서(Secure Sockets Layer Certificate)는 웹사이트와 사용자의 브라우저 간에 주고받는 데이터를 암호화하여 안전하게 보호하는 역할을 합니다. 이를 통해 데이터가 중간에 가로채이거나 변조되는 것을 방지할 수 있습니다.
🌏 SSL 인증서의 주요 역할
- 데이터 암호화: 사용자와 서버 간에 주고받는 데이터를 암호화하여, 민감한 정보가 중간에서 유출되지 않도록 보호합니다. 예를 들어, 로그인 정보나 신용카드 정보 같은 데이터가 암호화됩니다.
- 서버 신뢰성 검증: SSL 인증서는 서버의 신원을 증명하여, 사용자가 접속한 웹사이트가 진짜임을 보장합니다. 사용자가 웹사이트에 접속하면 브라우저는 SSL 인증서를 확인하고, 신뢰할 수 있는 사이트인지 여부를 판단합니다.
- SEO 향상: 구글 등 검색 엔진은 SSL 인증서를 설치한 사이트를 더 신뢰하며, SEO 점수에 긍정적인 영향을 미칩니다.
🌏 Let’s Encrypt란?
Let’s Encrypt는 무료로 SSL 인증서를 발급해주는 인증 기관으로, certbot이라는 툴을 통해 손쉽게 설치하고 갱신할 수 있습니다. 유료 인증서와 달리 유효 기간이 90일로 짧지만 자동 갱신 기능을 통해 편리하게 사용할 수 있습니다.
인증서를 설치한 후에는 아래와 같이 https로 접속할 수 있게 됩니다.
![](https://blog.kakaocdn.net/dn/bOxLER/btsKyYXdkGl/lUsHvaDD8oBAd63vM1x4U0/img.png)
🌏 Let’s Encrypt로 인증서 발급받기
✔️ DNS 설정하기
사용자가 어떤 형식으로 접속하든지 동일한 보안 연결이 이루어지도록 하기 위해 반드시 www를 함께 포함해야 합니다.
![](https://blog.kakaocdn.net/dn/vmnsW/btsKxjaD01Z/UOINILXVxXNejrOjNeS5m1/img.png)
일부 사용자는 www가 포함된 주소로 접속하는 경우가 있고(습관이라던가,,) SEO 관점에서도 www가 있는 주소와 없는 주소를 서로 다른 사이트로 인식할 수 있습니다. SSL 인증서를 두 도메인 모두에 적용하면 검색 엔진이 두 주소를 동일한 사이트로 인식하도록 유도할 수 있습니다.
이 설정을 한 후에 DNS가 전파될 때까지 잠시 시간이 걸립니다 기다리세용
✔️ 서버에 Certbot Nginx 플러그인 설치
여기부터 서버로 이동합니다
서버에 nginx가 설치되어 있는 경우에 해당합니다.
Ubuntu의 경우, 아래 명령어로 Certbot과 Nginx 플러그인을 설치할 수 있습니다.
sudo apt update
sudo apt install certbot python3-certbot-nginx
✔️ Certbot 명령어로 인증서 발급
현재 nginx 설정파일은 ssl 인증서와 관련된 내용을 포함하지 않은 상태입니다.
# HTTP 요청을 HTTPS로 리다이렉트
server {
listen 80;
listen [::]:80;
server_name {domain} www.{domain};
return 301 https://$host$request_uri;
}
# HTTPS 설정
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {domain} www.{domain};
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
아래 명령어로 인증서를 발급합니다.
sudo systemctl stop nginx
sudo certbot certonly --standalone -d {domain} -d www.{domain}
![](https://blog.kakaocdn.net/dn/cDPMCL/btsKyrTjVCW/5KkP802AP4Vl2UDWr1zFVK/img.png)
✔️ Nginx 설정 파일 수정
/etc/nginx/sites-available 에 들어있는 default 파일을 아래와 같이 수정합니다.
sudo vim /etc/nginx/sites-available/default
(vim 모드에서 전체 삭제 - ggdg)
# HTTP 요청을 HTTPS로 리다이렉트
server {
listen 80;
listen [::]:80;
server_name {domain} www.{domain};
return 301 https://$host$request_uri;
}
# HTTPS 설정
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {domain} www.{domain};
# SSL 인증서 설정
ssl_certificate /etc/letsencrypt/live/{domain}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{domain}/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
이제 ssl 인증서를 포함한 설정으로 nginx를 재실행합니다.
sudo systemctl start nginx
sudo systemctl status nginx
![](https://blog.kakaocdn.net/dn/O9ebt/btsKzGBDSwN/WcVDukoA9tGI0fCbEpIGA1/img.png)
이렇게 하면 https 로 들어갈 수 있게 됩니다!!!
![](https://blog.kakaocdn.net/dn/chX0BJ/btsALWnWIgA/XMkMDnLKRussvcLggSXEq0/img.jpg)
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
'DevOps' 카테고리의 다른 글
[Infrastructure] 재배포 및 배포 롤백: 서비스 장애 발생 시 피해를 최소화하기 위한 롤백의 중요성 (2) | 2023.08.26 |
---|---|
[Infrastructure] SPOF(Single Point of Failure)란? (4) | 2023.08.25 |
[Infrastructure] 무중단 배포 시 고려사항: 서비스 장애를 막기 위한 백엔드 개발자의 눈물나는 노력쿠 (2) | 2023.08.12 |
🌏 SSL 인증서란?
해당 도메인이 https로 인증을 받기 위한 인증서입니다.
인증서를 받기 이전에 해당 도메인으로 들어가보면 아래와 같이 https로 접근이 불가함을 볼 수 있습니다.
![](https://blog.kakaocdn.net/dn/YJgKo/btsKw6WwgNu/4wurlyH5SaqKnMlGSo3qZK/img.png)
SSL 인증서(Secure Sockets Layer Certificate)는 웹사이트와 사용자의 브라우저 간에 주고받는 데이터를 암호화하여 안전하게 보호하는 역할을 합니다. 이를 통해 데이터가 중간에 가로채이거나 변조되는 것을 방지할 수 있습니다.
🌏 SSL 인증서의 주요 역할
- 데이터 암호화: 사용자와 서버 간에 주고받는 데이터를 암호화하여, 민감한 정보가 중간에서 유출되지 않도록 보호합니다. 예를 들어, 로그인 정보나 신용카드 정보 같은 데이터가 암호화됩니다.
- 서버 신뢰성 검증: SSL 인증서는 서버의 신원을 증명하여, 사용자가 접속한 웹사이트가 진짜임을 보장합니다. 사용자가 웹사이트에 접속하면 브라우저는 SSL 인증서를 확인하고, 신뢰할 수 있는 사이트인지 여부를 판단합니다.
- SEO 향상: 구글 등 검색 엔진은 SSL 인증서를 설치한 사이트를 더 신뢰하며, SEO 점수에 긍정적인 영향을 미칩니다.
🌏 Let’s Encrypt란?
Let’s Encrypt는 무료로 SSL 인증서를 발급해주는 인증 기관으로, certbot이라는 툴을 통해 손쉽게 설치하고 갱신할 수 있습니다. 유료 인증서와 달리 유효 기간이 90일로 짧지만 자동 갱신 기능을 통해 편리하게 사용할 수 있습니다.
인증서를 설치한 후에는 아래와 같이 https로 접속할 수 있게 됩니다.
![](https://blog.kakaocdn.net/dn/bOxLER/btsKyYXdkGl/lUsHvaDD8oBAd63vM1x4U0/img.png)
🌏 Let’s Encrypt로 인증서 발급받기
✔️ DNS 설정하기
사용자가 어떤 형식으로 접속하든지 동일한 보안 연결이 이루어지도록 하기 위해 반드시 www를 함께 포함해야 합니다.
![](https://blog.kakaocdn.net/dn/vmnsW/btsKxjaD01Z/UOINILXVxXNejrOjNeS5m1/img.png)
일부 사용자는 www가 포함된 주소로 접속하는 경우가 있고(습관이라던가,,) SEO 관점에서도 www가 있는 주소와 없는 주소를 서로 다른 사이트로 인식할 수 있습니다. SSL 인증서를 두 도메인 모두에 적용하면 검색 엔진이 두 주소를 동일한 사이트로 인식하도록 유도할 수 있습니다.
이 설정을 한 후에 DNS가 전파될 때까지 잠시 시간이 걸립니다 기다리세용
✔️ 서버에 Certbot Nginx 플러그인 설치
여기부터 서버로 이동합니다
서버에 nginx가 설치되어 있는 경우에 해당합니다.
Ubuntu의 경우, 아래 명령어로 Certbot과 Nginx 플러그인을 설치할 수 있습니다.
sudo apt update
sudo apt install certbot python3-certbot-nginx
✔️ Certbot 명령어로 인증서 발급
현재 nginx 설정파일은 ssl 인증서와 관련된 내용을 포함하지 않은 상태입니다.
# HTTP 요청을 HTTPS로 리다이렉트
server {
listen 80;
listen [::]:80;
server_name {domain} www.{domain};
return 301 https://$host$request_uri;
}
# HTTPS 설정
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {domain} www.{domain};
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
아래 명령어로 인증서를 발급합니다.
sudo systemctl stop nginx
sudo certbot certonly --standalone -d {domain} -d www.{domain}
![](https://blog.kakaocdn.net/dn/cDPMCL/btsKyrTjVCW/5KkP802AP4Vl2UDWr1zFVK/img.png)
✔️ Nginx 설정 파일 수정
/etc/nginx/sites-available 에 들어있는 default 파일을 아래와 같이 수정합니다.
sudo vim /etc/nginx/sites-available/default
(vim 모드에서 전체 삭제 - ggdg)
# HTTP 요청을 HTTPS로 리다이렉트
server {
listen 80;
listen [::]:80;
server_name {domain} www.{domain};
return 301 https://$host$request_uri;
}
# HTTPS 설정
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {domain} www.{domain};
# SSL 인증서 설정
ssl_certificate /etc/letsencrypt/live/{domain}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{domain}/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
이제 ssl 인증서를 포함한 설정으로 nginx를 재실행합니다.
sudo systemctl start nginx
sudo systemctl status nginx
![](https://blog.kakaocdn.net/dn/O9ebt/btsKzGBDSwN/WcVDukoA9tGI0fCbEpIGA1/img.png)
이렇게 하면 https 로 들어갈 수 있게 됩니다!!!
![](https://blog.kakaocdn.net/dn/chX0BJ/btsALWnWIgA/XMkMDnLKRussvcLggSXEq0/img.jpg)
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
'DevOps' 카테고리의 다른 글
[Infrastructure] 재배포 및 배포 롤백: 서비스 장애 발생 시 피해를 최소화하기 위한 롤백의 중요성 (2) | 2023.08.26 |
---|---|
[Infrastructure] SPOF(Single Point of Failure)란? (4) | 2023.08.25 |
[Infrastructure] 무중단 배포 시 고려사항: 서비스 장애를 막기 위한 백엔드 개발자의 눈물나는 노력쿠 (2) | 2023.08.12 |