HTTPS 인증서(SSL 인증서)를 적용했는데, 사이트에 http://로도 접속되길 원하는 경우”**에는 크게 두 가지 방법이 있습니다.

 HTTPS 인증서(SSL 인증서)를 적용했는데, 사이트에 http://로도 접속되길 원하는 경우”**에는 크게 두 가지 방법이 있습니다.


 “HTTPS 인증서(SSL 인증서)를 적용했는데, 사이트에 http://로도 접속되길 원하는 경우”에는 크게 두 가지 방법이 있습니다.

  1. HTTP -> HTTPS로 자동 리다이렉트
  2. HTTP와 HTTPS를 동시에 허용 (사용자가 http://로 접속해도 그대로 http 통신을 유지)

일반적으로 보안과 **검색엔진 최적화(SEO)**를 위해서는 첫 번째 방법(자동 리다이렉트)을 권장하지만, 상황에 따라 두 번째 방식을 쓰기도 합니다.

아래는 Apache/Nginx 등 대표적인 웹 서버 기준으로 간단히 설명합니다.


1. HTTP와 HTTPS 모두 열어 두는 기본 개념

  1. 서버가 포트 80(HTTP)과 포트 443(HTTPS)을 둘 다 리스닝(listen)하도록 설정

    • 도메인 DNS 설정에서 A 레코드는 동일 서버 IP를 가리키고,
    • 서버 자체(방화벽)에서도 80/443 포트를 열어 둬야 합니다.
  2. SSL 인증서(예: Let’s Encrypt, 상용 인증서) 구성

    • 웹 서버(아파치, 엔진엑스) 설정 파일에 SSL 인증서 경로와 비밀키 경로를 등록
    • 443 포트 서버 블록(가상호스트)에서 ssl on;(Nginx) 또는 SSLEngine on(Apache) 등이 활성화
  3. HTTP 접근 허용 여부

    • 보통은 HTTP(포트 80) 요청이 들어오면 **자동으로 HTTPS(443)**로 리다이렉트(301, 302)합니다.
    • 하지만 특정 이유로 “http://”도 그대로 접속 가능하게 하려면, HTTP 서버 블록에서 별도 리다이렉트 없이 그냥 응답하게 설정하면 됩니다.

2. 대표적인 설정 예시

2.1 Nginx 예시

#---------------------------
# 1) HTTP(80) 설정
#---------------------------
server {
    listen 80;
    server_name example.com www.example.com;

    # 방법 A) HTTP -> HTTPS 리다이렉트 (권장)
    return 301 https://$host$request_uri;

    # 방법 B) HTTP 그대로 사용 (리다이렉트 안 함)
    # root /var/www/html;
    # index index.html index.php;
    # ... (이하 일반 HTTP 설정)
}

#---------------------------
# 2) HTTPS(443) 설정
#---------------------------
server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/nginx/ssl/example.crt;
    ssl_certificate_key /etc/nginx/ssl/example.key;
    # ssl_protocols TLSv1.2 TLSv1.3; ...
    
    root /var/www/html;
    index index.html index.php;

    # ... 추가 설정(php-fpm, location 등)
}
  • 방법 A: HTTP 블록에서 return 301 https://$host$request_uri;로 모든 HTTP 요청을 HTTPS로 리다이렉트
  • 방법 Broot와 index 등을 설정하여 HTTP로도 응답
    • 이 경우, 사용자가 http://example.com 으로 들어오면 그대로 http 통신
    • https://example.com 은 인증서를 사용해 보안 통신

2.2 Apache 예시

#---------------------------
# 1) HTTP(80) 설정
#---------------------------
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    # 방법 A) HTTP -> HTTPS 리다이렉트
    # Redirect permanent / https://example.com/

    # 방법 B) HTTP 그대로 사용 (리다이렉트 안 함)
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>

</VirtualHost>

#---------------------------
# 2) HTTPS(443) 설정
#---------------------------
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.crt
    SSLCertificateKeyFile /etc/ssl/private/example.key
    # SSLCertificateChainFile /etc/ssl/certs/example-ca.crt (체인 인증서 필요한 경우)

    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>

</VirtualHost>
  • HTTP 가상호스트에서 Redirect 지시어를 쓰면 자동 HTTPS 전환(권장)
  • 혹은 Redirect 줄을 빼고, DocumentRoot 등을 지정해 놓으면 HTTP로도 접속 가능하게 됨

3. 주의사항

  1. HTTP 그대로 둔 상태의 보안 이슈

    • 로그인, 민감 정보 전송 시 암호화되지 않으므로 도청·변조 위험
    • 크롬 등 주요 브라우저에서 “안전하지 않음(Not Secure)” 경고 표시
  2. SEO(검색엔진 최적화)

    • 구글 검색 등을 기준으로, HTTPS가 권장되며, HTTP와 HTTPS가 동일 콘텐츠로 동시에 노출되면 중복 콘텐츠 이슈가 생길 수 있음
    • 일반적으로 HTTPS만 사용하거나, HTTP → HTTPS로 리다이렉트 하는 것이 표준
  3. 쿠키/세션 혼합 문제

    • HTTP와 HTTPS를 모두 허용할 경우 세션 쿠키가 혼합되어 세션 이슈가 발생할 수 있음
    • 보안을 위해서는 Secure 쿠키, HttpOnly 설정 등을 반드시 확인
  4. HSTS(HTTP Strict Transport Security)

    • HTTPS 사이트에서 HSTS를 활성화하면, 브라우저가 자동으로 HTTP 접속을 차단 → “무조건 HTTPS”
    • HSTS를 쓴다면 더 이상 HTTP로 접속이 불가능하니, “HTTP 유지”와는 반대 방향

4. 결론

  • HTTPS 인증서 사이트이면서도 HTTP로도 접속 가능하게 하려면,

    1. DNS가 동일 도메인을 서버 IP로 연결
    2. 웹 서버가 80/443 포트 모두 열고
    3. HTTP 가상호스트 설정을 “리다이렉트”가 아닌 “직접 서빙” 모드로 두면 됨.
  • 그러나 대부분은 HTTP → HTTPS 자동 리다이렉트를 쓰는 것이 권장(보안·SEO 측면).

  • 특수한 용도(“데이터 전송 필요 없음”, “단순 안내 페이지” 등)라면 HTTP를 그대로 열어놓을 수도 있지만, 개인정보나 로그인이 있는 서비스라면 반드시 HTTPS를 기본으로 운영해야 합니다.

댓글

이 블로그의 인기 게시물

웹에서 사용자 기기 구별 방법

영상 저장 관련 기능 목록

org.xml.sax.SAXParseException 해결 방법