[AWS] apache 그누보드 SSL(https) 적용하기 (css 깨지는 문제 해결)

Sungjin Cho·2024년 9월 2일

AWS

목록 보기
5/7
post-thumbnail

lets encrypt 를 사용하여 ec2 https 적용하기

시연용 페이지에서 ssl을 적용하기 위해 무료 인증서인 letsencrypt를 사용해보았다. 이전에 css가 깨지는 문제를 해결하다 인스턴스가 먹통이 되어서 해결을 못하였는데 이번 기회에 해결할 수 있었다.

1. ec2 인스턴스의 tcp 포트 보안 그룹 허용

유형 HTTPS 로 설정하면 443 포트가 자동으로 잡힌다. 규칙 추가

2. ssh 쉘에서 tcp 포트의 허용 유무 확인 (선택)

netstat 명령어 적용이 안되서 net-tools 설치 후 ss 명령어를 통해 포트 확인

(ss는 netstat와 비슷한 정보를 보여주는 명령어)

sudo apt install net-tools
sudo ss -tnlp

3. certbot 설치 후 letsencrypt 버전 확인

sudo apt install certbot
letsencrypt --version

4. apache에 맞는 certbot 패키지 설치

sudo apt install python3-certbot-apache

5. certbot을 사용하여 인증서 생성하기

구동 중인 apache 서버 중지

sudo service apahce2 stop

Standalone 방식으로 인증서 발급

sudo certbot certonly --standalone -d www.citymart.kr

-d 뒤 에는 ssl을 적용할 도메인 입력

6. 인증서 파일 웹 서비스에 반영하도록 설정 파일 수정

인증서 경로는 아래와 같다.

/etc/letsencrypt/live/www.citymart.kr

apache 웹 서버의 설정 파일 편집

/etc/apache2/sites-available/000-default.conf

또는 default-ssl 파일에서 VirtualHost 443 부분 코드를 수정 후 sudo a2ensite default-ssl 로 설정을 활성화 해도 됨

7. ssl 활성화

sudo a2enmod ssl

명령어로 ssl 엔진 활성화

8. /var/www/html/config.php 파일 수정

define('G5_DOMAIN', '[https://www.citymart.kr](https://www.citymart.kr/)'); define('G5_HTTPS_DOMAIN', '[https://www.citymart.kr](https://www.citymart.kr/)');

부분 수정 (https 붙은 도메인으로)

이렇게 변경 후에 sudo systemctl restart apache2 로 apache 서버를 재시작 하고 https 경로로 접속해보면

css가 깨져서 나온다..

이 문제에 대해서는 구글링을 해도 모두 config.php 를 수정하면 된다고 하는데 gpt에 물어보니 mixed contents 문제 때문이라는 답변을 받았고, redirect 를 설정해면 된다고 하였다.

혼합 콘텐츠 문제 해결:
이전에는 페이지가 HTTPS로 로드되었지만, 일부 리소스(CSS, 자바스크립트, 이미지 등)가 여전히 HTTP로 요청되고 있었을 가능성이 높습니다. 이 리다이렉션 규칙으로 인해 모든 리소스 요청이 HTTPS로 변환되어 혼합 콘텐츠 문제가 해결되었습니다

9. htaccess 파일 생성

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{HTTPS} off
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

따라서 모든 리소스 요청을 https로 변환하기 위해 .htaccess 파일을 생성 한 후 rewrite 를 설정하였다.

ssl 적용 후 css 깨지는 문제까지 해결 완료

0개의 댓글