https 접속을 하기 위한 인증
네트워크 통신 모델의 애플리케이션 계층 프로토콜로, 웹에서 데이터를 주고받는 기본 규약이다.
클라이언트는 서버에 GET, POST, PATCH, DELETE 등 다양한 메서드로 요청을 보내며, 이때 요청과 응답은 평문(plain text) 으로 전달된다. 따라서 제3자가 네트워크를 엿보면 요청 URL, 헤더, 본문 내용까지 그대로 볼 수 있다.
요청의 결과는 200 OK, 404 Not Found, 301 Redirect 같은 상태 코드로 표현된다.
HTTP 위에 TLS/SSL 계층을 덧붙여 보안을 강화한 프로토콜이다.
HTTP가 평문으로 데이터를 주고받는 반면, HTTPS는 암호화된 통신 채널을 통해 데이터를 주고받아 기밀성(Encryption), 무결성(Integrity), 인증(Authentication) 을 보장한다.
또한 최신 HTTPS는 보통 HTTP/2나 HTTP/3와 결합되어, 텍스트 대신 바이너리 형식으로 데이터를 교환하여 전송 효율과 성능까지 개선한다.
즉, HTTPS는 단순히 데이터를 주고받는 것뿐만 아니라, 통신 과정에서 SSL 인증서를 통해 서버의 신원을 확인하고, 중간자 공격이나 데이터 탈취를 막아 안전한 웹 환경을 제공한다.
HTTP 평문 전송이라 도청·위변조 위험 있음.
HTTPS 모든 데이터를 암호화해 신용카드·개인정보 같은 민감한 정보 보호에 안전.
검색엔진은 HTTPS 사이트를 더 신뢰해 검색 순위(SEO) 에서 유리함.
브라우저도 HTTPS에 🔒 아이콘을 표시해서 사용자 신뢰도를 높여줌.
HTTPS는 HTTP/2, HTTP/3와 함께 더 빠르게 동작함.
또한 트래픽 출처(추천 링크, 광고, 소셜 미디어 등)를 정확히 분석할 수 있어 마케팅/SEO에 중요.
SEO 최적화.. 중요하죠 검색엔진에 상단에 출력해야 하니깐요.
네이버 서치 어드바이저 등 공식 문서 확인했던게...
자 자 설명은 그만하고
클라이언트(certbot)가 토큰 파일 생성
Nginx/Apache가 해당 파일을 서비스
Let’s Encrypt 서버가 http://도메인/.well-known/acme-challenge/토큰 요청
파일이 정상 응답되면 도메인 소유권 인증 완료 → SSL 인증서 발급
ubuntu 18 버전 이상시 python3 로 대체 되었습니다. 이거 꼭 버전 확인해주세요
현재 certbot 에서 snap 이랑 pip 방식만 권장하고있어 apt 는 공식문서에 없었습니다. apt 방식이면 글 참고 해주세요!
install
$ apt-get update
$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx
인증서 생성
$ sudo certbot --nginx -d example.com -d www.example.com
두 도메인 관련 nginx 추가 되었는데 방식이 맘에안들어서 조금 수정하겠습니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:3000; #proxy_server
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 https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port 443;
proxy_redirect http:// https://;
proxy_buffering off;
}
}
글 읽어주셔서 감사합니다