RadarURL

조회 수 0 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

개요

웹 사이트를 개발하고 도메인을 연동할 때 실제 사용자가 접속하는 페이지라면 보안 상 SSL 인증서를 설치하고 https로 접속을 해야 한다.

이때 같은 도메인으로 http로 접속하는 경우 https로 자동으로 접속이 되도록 설정을 해주는 것이 좋은데,

자동으로 리다이렉트 하는 방법에는 여러 가지가 있어 그 방법들을 정리하고자 한다.

 

보안 상 가장 권장되는 방법인 HSTS에 대해서는 아래 포스팅을 참고해 주세요 :)

https://hojun-dev.tistory.com/entry/HSTS-설정으로-HTTPS-강제-적용하기

 

HSTS 설정으로 HTTPS 강제 적용하기

개요 업무 중 하나의 시스템에서 GS인증을 적용해야 했는데, 그 서비스의 기본 도메인에 HSTS를 적용하고, 크롬의 HSTS Preload List에 등록해야 했다. 그에 따라 서브 도메인들에도 필연적으로 HTTPS를

hojun-dev.tistory.com

 

프론트에서 직접 리다이렉트

가장 쉬운 방법으로, 웹 사이트를 접속할 때 Javascript로 프로토콜이 http일 때 https로 리다이렉트 하는 방법이다.

if (location.protocol === 'http:') {
  location.href = 'https://' + location.host;
  // location.href = 'https' + location.href.substring(4); // query 유지
}

가장 간단하게 http인 경우 https의 기본 호스트로 이동하도록 설정하는 방법인데,

이 경우는 이미 프론트에 접속을 한 번 한다는 점에서 좋은 방법이라고 하기는 어렵다.

 

WS(Web Server)에서 리다이렉트

웹 서버로 요청이 왔을 때 리다이렉트하는 방법으로, 환경에 크게 구애받지 않고 가장 사용하기 좋은 방법이다.

여기에서는 apache2와 nginx 각각의 웹 서버에서 적용하는 방법을 다룬다.

 

SSL 인증서를 가지고 서버에 https를 연동하는 방법은 크게 로드 밸런서에 인증서를 적용하는 방법과 서버에 직접 인증서 파일을 두고 적용하는 방법으로 나뉜다.

이 내용을 기억하고 로드 밸런서의 유무에 따라 적용하는 방법에 대해 알아보자.

참고로 conf 파일의 디렉토리는 ubuntu를 기준으로 작성되었으므로 다른 OS에서는 이와 경로가 다를 수 있다.

 

로드 밸런서가 있는 경우

서버에 로드 밸런서를 적용한 경우에는 X-Forwarded라는 헤더가 존재한다.

자세한 내용은 아래 링크를 참고해 보자.

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/x-forwarded-headers.html

 

HTTP 헤더 및 Application Load Balancer - Elastic Load Balancing

클라이언트 포트 보존 속성(routing.http.xff_client_port.enabled)을 활성화하고 routing.http.xff_header_processing.mode 속성에 preserve 또는 remove을(를) 선택할 경우 Application Load Balancer는 클라이언트 포트 보존 속

docs.aws.amazon.com

 

이 중 X-Forwarded-Proto 헤더는 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(http 또는 https)을 전달한다.

따라서 이 헤더를 가지고 http일 때 https로 리다이렉트를 시킬 수 있다.

아래는 AWS의 지식 센터에 올라온 공식 문서이다.

https://repost.aws/ko/knowledge-center/redirect-http-https-elb

 

ELB를 사용하여 HTTPS로 HTTP 트래픽 리디렉션

Classic Load Balancer에서 HTTP와 HTTPS 리스너를 사용하고 있습니다. Classic Load Balancer는 SSL을 오프로드하고 백엔드 연결은 단일 HTTP 포트(포트 80)에서 수신합니다. HTTP에서 HTTPS로 트래픽을 리디렉션하

repost.aws

위 문서는 현재는 거의 사용하지 않는 Classic Load Balancer에서의 매뉴얼이지만 그 위의 문서에서 보았듯 AWS의 Application Load Balnacer에도 동일한 헤더가 존재하기 때문에 동일한 방법으로 적용할 수 있다.

아래에서 설명할 방법도 위 문서와 방법이 동일하다.

각 웹 서버에 맞게 리다이렉트하는 방법을 알아보자.

apache2

먼저 mod_rewrite 모듈을 설치해야 한다. 이미 설치되어있는 경우 패스.

a2enmod rewrite

sites_avaliable의 conf 파일에 아래 내용을 추가한다.

# /etc/apache2/sites-avaliable/000-default.conf

<VirtualHost *:80>
    ServerName {도메인명} # ex) test.com
    DocumentRoot {폴더경로} # ex) /var/www/html

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    ...
</VirtualHost>

이후 apache2를 재시작한다.

service apache2 restart

nginx

sites_avaliable의 conf 파일에 아래 내용을 추가한다.

# /etc/nginx/sites-avaliable/default.conf

server {
    listen 80;
    server_name {도메인명}; # ex) test.com

    if ($http_x_forwarded_proto = 'http') {
    	return 301 https://$host$request_uri;
    }

    ...
}

이후 nginx를 재시작한다.

service nginx restart

 

서버에 인증서 파일이 있는 경우

서버에 인증서 파일이 있는 경우 웹 서버 설정 자체에서 443 포트로 SSL 설정을 적용할 수 있다.

또한 로드 밸런서가 없다면 이렇게 적용을 하는 수밖에 없을 것이다.

 

방법을 간략히 설명하면,

443 포트에서 SSL 설정을 통해 https를 적용하고,

http를 뜻하는 80 포트로 요청이 들어오면 443 포트로 리다이렉트하는 방법이다.

apache2

동일하게 mod_rewrite 모듈을 설치해야 한다. 이미 설치되어있는 경우 패스.

a2enmod rewrite

SSL을 사용하기 위해 ssl 모듈을 활성화해야 한다.

a2enmod ssl

sites_avaliable의 conf 파일에 아래 내용을 추가한다.

# /etc/apache2/sites-avaliable/~~~.conf

<VirtualHost *:80>
    ServerName {도메인명} # ex) test.com

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost *:443>
    ServerName {도메인명} # ex) test.com
    DocumentRoot {폴더경로} # ex) /var/www/html

    # SSL 인증서와 키 파일 설정
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/your_certificate.crt
    SSLCertificateKeyFile /etc/apache2/ssl/your_private_key.key

    ...
</VirtualHost>

 

이후 apache2를 재시작한다.

service apache2 restart

nginx

sites_avaliable의 conf 파일에 아래 내용을 추가한다.

# /etc/nginx/sites-avaliable/~~~.conf

server {
    listen 80;
    server_name {도메인명}; # ex) test.com

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name {도메인명}; # ex) test.com

    # SSL 인증서와 키 파일 설정
    ssl_certificate /etc/nginx/ssl/your_certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/your_private_key.key;

    ...
}

이후 nginx를 재시작한다.

service nginx restart

 

로드 밸런서에서 리다이렉트

서버를 세팅하고 로드 밸런서를 설정하는 경우 로드 밸런서에서 http 요청을 자동으로 https로 리다이렉트 할 수 있다.

다만 대부분의 클라우드에서는 VPC(Virtual Private Cloud) 환경의 로드 밸런서에서만 지원한다. (AWS, ncloud 등)

따라서 VPC 환경이 아닌 경우 웹 서버에서 리다이렉트를 적용하도록 하자.

참고로 AWS의 경우 최근의 계정들은 모두 VPC를 사용하도록 되어있다.

 

클라우드의 경우 각 플랫폼마다 설정하는 방법이 다르므로 각 플랫폼의 공식 가이드를 참조하는 것이 좋고,

여기에서는 AWS의 경우만 정리하도록 하겠다.

AWS

아래 링크는 AWS 지식 센터에 올라온 공식 문서이다. 자세한 내용은 아래 문서를 참고해 보자.

https://repost.aws/ko/knowledge-center/elb-redirect-http-to-https-using-alb

 

Application Load Balancer를 사용하여 HTTP를 HTTPS로 리디렉션

Application Load Balancer 리스너 규칙을 사용하여 HTTP 요청을 HTTPS로 리디렉션하려고 합니다. 어떻게 해야 하나요?

repost.aws

 

먼저 로드밸런서 메뉴의 리스너 탭에서 HTTP:80을 선택하고 리스너 편집에 접근한다.

 

 

이후 기본 작업 부분에서 다른 내용이 있는 경우 제거하고, 리디렉션을 선택하고 아래와 같이 설정한다.

 

 

 

 

출처 : https://hojun-dev.tistory.com/entry/http-https-%EB%A6%AC%EB%8B%A4%EC%9D%B4%EB%A0%89%ED%8A%B8

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928087
» 웹서버,WAS http를 https로 리다이렉트하는 여러가지 방법 new JaeSoo 2025.09.10 0
653 웹서버,WAS SSL인증서 없이 HTTPS에서 HTTP로 되돌리기 new JaeSoo 2025.09.10 2
652 웹서버,WAS [SSL] win-acme, Let's encrypt로 무료 SSL 인증서 발급 new JaeSoo 2025.09.10 0
651 웹서버,WAS [SSL] Windows 10에서 Let's Encrypt로 SSL 인증서 무료 발급받기 new JaeSoo 2025.09.10 0
650 웹서버,WAS 무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 new JaeSoo 2025.09.10 0
649 웹서버,WAS 아파치 서버에 https SSL 인증서 적용하는 방법 (apache httpd) new JaeSoo 2025.09.10 0
648 웹서버,WAS 아파치2(Apache2) SSL HTTPS 적용하기 new JaeSoo 2025.09.10 0
647 웹서버,WAS 아파치 웹서버에 멀티 도메인에 대한 80, 443 포트 설정하는 방법 newfile JaeSoo 2025.09.10 0
646 소프트웨어 Google Photo 대신 Immich를 써보자 file JaeSoo 2025.08.07 126
645 소프트웨어 [사진관리] PhotoPrism vs LibrePhoto 비교 소감 JaeSoo 2025.05.19 14
644 윈도우즈 윈도우 자동 로그온 설정이 보이지 않을 때 조치사항 JaeSoo 2024.08.16 203
643 소프트웨어 핸드폰 연락처 한방에 깔끔하게 정리하기 - by.컨택에디터(Contact Editor) JaeSoo 2024.05.27 31
642 윈도우즈 Rufus 로 윈도우10 usb 디스크를만들때 UEFI,Legacy 설정 (4G 이상 부팅 이미지 GPT) file JaeSoo 2023.11.20 2260
641 윈도우즈 Windows 11에서 모든 시스템 트레이 아이콘을 관리하고 표시하는 방법 file JaeSoo 2023.11.05 1367
640 윈도우즈 윈도우11 작업 표시줄 좌/우/상/하 이동 및 두 줄 만드는 방법 file JaeSoo 2023.11.05 1250
639 윈도우즈 윈도우11의 마우스 오른쪽 버튼 메뉴, 기존 윈도우 형태로 되돌리는 방법 file JaeSoo 2023.10.25 913
638 윈도우즈 [Msoffice] Pdfmaker office addin 오류 해결방법 file JaeSoo 2023.08.21 3775
637 유닉스/리눅스 [U2L] Unix to Linux 기대효과 분석 JaeSoo 2023.05.16 1258
636 유닉스/리눅스 리눅스 inodes full 이슈 해결 방법 JaeSoo 2023.05.02 169
635 유닉스/리눅스 inode full JaeSoo 2023.05.01 115
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 33 Next
/ 33


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너